4

私は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()問題なく動作します。

4

2 に答える 2

12

DomainPrj から EntityFramework を参照してみましたか?

これらのメソッドは DbContext で定義され、DbContext は EntityFramework で定義されるため、参照する必要があります。

一般に、クラスだけでなく、アセンブリで定義されているデリゲート、メソッド、プロパティなども使用する場合。そのアセンブリへの参照が必要です。

于 2013-01-14T16:37:00.527 に答える
0

私にとっては、 Microsoft.Data.Services.Client.dll を追加する必要がありました

于 2015-06-06T18:44:12.820 に答える