2015年09月24日

EntityFramework(5):DbContextクラス

   このエントリーをはてなブックマークに追加 Clip to Evernote
DbContextは、EntityFrameworkの最も中心となるクラスです。

DBにアクセスするには、次のようにDbContextから派生したクラスのインスタンスを 生成し、データベースにアクセスする準備をします。

 var db = new NorthwindContext();

このシリーズの第1回で見たように、Visual Studio の[データベースからCode First] でソースを 作成すると、必ず、DbContextから派生したカスタムクラスのコードが作成されます。
作成されたNorthwindContext.cs の中身を見てみると、

  public partial class NorthwindContext : DbContext {
      public NorthwindContext()
          : base("name=NorthwindConnection") {
      }
      ...

と、NorthwindContextは、DbContext の派生クラスしていることが確認できます。
コンストラクタで

  base("name=NorthwindConnection")

としていますが、これは、データベースへの接続に、configファイルの connectionStrings で指定してある NorthwindConnection 接続文字列を使うことを示しています。

なお、partialクラスに、

   public NorthwindContext(string nameOrConnectionString) 
       : base(nameOrConnectionString) {

   }

といったコンストラクタを定義すれば、以下のように直接接続文字列を指定して接続することもできます。

 string connectionString = "data source=(LocalDB)...";
 var db = new NorthwindContext(connectionString);


DbContextには、Database, Configuration, ChangeTracker というプロパティがあります。 Databaseプロパティは、すでにLog出力のところでちょっとだけ触れましたね。 これら3つのプロパティについては、必要に応じて取り上げるつもりです。

それと、DbContextはスレッドセーフではないので、マルチスレッドアプリケーションで、
複数のスレッドで同一のDbContextインスタンスを使いまわすようなことはできません。

 

 


この記事へのコメント
ブログアンテナ登録のご連絡 お世話になります。貴サイト拝見しまして、同様のテーマを集めたニュースサイトを運営配信しております。非常に良いコンテンツを配信されており勝手ながらアンテナに追加させていただきました。(以下URLのヘッダはスパム対策で外しています)www.geocities.jp/geocitiehp234/an/anapple 相互リンクぜひご検討いただければ幸いです。管理人
Posted by 管理人 at 2015年09月28日 19:50
 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/52435926