私はEFを初めて使用し、EF5から始めています。
Entity Framework 5のパフォーマンスに関する考慮事項の推奨事項に従って、2.4.2モデルを別のアセンブリに移動する... Dbコンテキスト(MyDbContextと呼ばれる)を管理するために、別のプロジェクト(EfPrjと呼びます)を作成しました。
ドメインレイヤー(これをDomainPrjと呼びます)では、EfPrjのエンティティを使用します。問題は、DomainPrj内で、DbContextから継承されたMyDbContextのメンバーを確認できないことです。
たとえば、テーブルUsersを更新する場合、コードは次のとおりです。
void UpdateUser(User u)
{
MyDbContext db = new MyDbContext();
//whatever is needed
db.SaveChanges();
}
しかし、EfPrjでは問題なく動作します。DomainPrjで、メンバー関数SaveChanges()が表示されず、次のエラーが発生します。
'MyDbContext' does not contain a definition for 'SaveChanges' and no extension method 'SaveChanges' ... could be found (are you missing a using directive or an assembly reference?)
更新: EfPrjは、ORMデータベースファーストモデルを使用するプロジェクトのみを使用します。MyDbContextは、デフォルトでEF5オブジェクトのように定義されます。publicpartial class MyDbContext:DbContext {public MyDbContext():base( "name = MyDbEntities"){}
したがって、DbContextから派生し、パブリックです。DomainPrjはEfPrjを参照し、MyDbContext db = new MyDbContext()
問題なく動作します。