redwarrior’s diary

C#, ASP.NET, WEB, G*などの雑多な情報

EF6

Entity Framework で SQLite を使用する

NuGetでSystem.Data.SQLiteパッケージをインストールし、以下をApp.configに追加する。 <entityFramework> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> </provider></providers></entityframework>

Prismを使用したWPFアプリケーションのまとまったサンプルを作ってみた

新しく作成するアプリケーションで、Windows Forms、WPFで開発するか悩んでいるチームがあったので、 説明用にWPFのサンプルを作成したが、お披露目する前にWindows Formsで開発する事に決まったようなので、勿体無いのでこちらで公開しようと思う。 サンプ…

SQL ServerのCHECK制約の設定方法

簡単な入力制限であれば、テーブルにCHECK制約をつける手もあるかなと思い、SQL ServerのCHECK制約の設定方法について調査しました。 SSDT(サーバーエクスプローラー) SSDTは、テーブル定義画面でCHECK 制約を追加できる。 CHECK制約の対象カラムは、カラ…

(小ネタ)Entity Framework でタイムアウトの設定方法まとめ

ExecuteSqlCommandでストアドプロシージャを実行した時にタイムアウトが発生してエラーになってしまったので、タイムアウトの時間を変更する方法を調べてみました。 また、デバック実行時にDB接続でタイムアウトがぼちぼち発生して面倒なので、コネクション…

SQL Server データベース プロジェクトを使用してDBのリファクタリングを行う

はじめに 明けましておめでとうございます。本年もよろしくお願いいたします。去年はあまり更新できなかったので、今年はもっと増やしていきたいですね。 さて、Visual Studio で作成できるプロジェクトの中には、「SQL Server データベース プロジェクト」…

(小ネタ)Entity Framework でdbo以外のスキーマを使用する

Entity FrameworkのCode FirstでDBを作成すると、テーブルはdboスキーマで作成されます。今回スキーマを分ける必要が出てきたので調べました。非常に簡単に設定できたので小ネタです。 Entity Frameworkでdbo以外のスキーマを使用するには、モデルクラスのク…

データベースからドメインモデルを作るのも有りな気がしてきた

Entity Framework 6が発表された当時は、Code Firstが盛んに宣伝されていたと思う。Code First以前はデザイナーで操作できると言っても自動生成されるxmlファイルの差分を見るのは辛そうだった。 そこでEntity Frameworkを使い始めた頃はCode Firstを使用し…

ユニットテストでのDBトランザクションのロールバックを共通化する

以前こんな記事を書きましたが、 redwarrior.hateblo.jp 毎回テストメソッドの中で using 文やデータ投入処理を書くのが面倒になってきたので、テストフレームワーク(MSTest)の機能を使って TestInitialize 属性でDB接続、データ投入を行い、TestCleanup …

Entity Framework で楽観的同時実行制御

EF6

基本的な内容は以下の書籍に書かれているので、今回はもう少し踏み込んだ話です。 www.shuwasystem.co.jp 上記書籍の5-4-4(236ページ)では、バージョン管理用のプロパティ名と付与する属性名の両方をTimestampとしていますが、どちらを指しているのかわか…

(小ネタ)Table-Per-Hierarchy とは

仕事の都合やら、質の高い内容を書こうとしたせいで、4か月近く更新が出来ていませんでした。今日からリフレッシュして、改めて気負わずに記事を書いていきたいと思います。 Entity Framework 6とEntity Framework Coreの違いを紹介した記事を読んでいて、…

Entity Framework で既存DBを使用した時にログ出力されるエラーの解消方法

EF6

新年一つ目の記事ということで、あけましておめでとうございます。今年もよろしくお願いいたします。 Entity Framework を使用して開発を進めていく場合に、開発中は Code First を使用してDBを再作成するけれど、 本番環境やステージング環境には既にDBが用…

(小ネタ)2重ループをLINQを使って書く

コレクションが二つあって、片方のコレクションの値で、もう片方のコレクションを検索して処理を行う時に、2重ループを使うことがありますが、これはLINQを使用して書くことも出来ます。 C#で解説する「データ処理の直交化と汎用化」 − @IT ただしサイト内…

テストプロジェクトからメインプロジェクトのDBを参照する

この記事は Windows & Microsoft技術 基礎 Advent Calendar 2015 - Qiita の15日目です。 アドベントカレンダーからいらした方、初めまして。今年の始めのあたりからブログを書き始めた redwarriror と申します。 普段はC#等のMicrosoft系の技術を中心に書い…

LINQを使用したメソッドの共通化の試行錯誤

LINQを使用して、DBから取得したデータでDTOを構築するメソッドを作成していると、インターフェイスは違うのに処理の流れがほぼ同じになる事ってありませんか? どういうことかと言うと、片方の処理では、単純なLINQを使用しているのでIQueryable<T>を返します</t>…

Entity Framework で実行した SQLのログを出力する方法

Entity Framework 6では、SQLのログを簡単に出力できるので、いくつか試してみました。 必要なクラスは、過去の記事と一緒です。 redwarrior.hateblo.jp コンソール出力 db.Database.Log = Console.Write; ラムダ式を使用 db.Database.Log = x => { Console.…

Entity Framework でSQLを実行する

EF6

今回も参考サイトとあまり変わらないのですが、Entity FrameworkでSQLを実行する方法を調べてみました。 結果を入れるクラスとして、以下を用意します。 public class Book { public int ID { get; set; } public string Title { get; set; } public string …