2016-06-17 14 views
3

あなたはこのタイプの質問に遭遇したかもしれませんが、私のケースでは、これは少し異なるシナリオであり、実行可能な回答が見つかりません。 (すでに存在するかもしれませんが、私は見つけられませんでした)。エンティティフレームワークをクラスライブラリに含めるか、直接アプリケーションに含める必要がありますか?

私は、機能がすべて複数のクラスライブラリに分割されているビジネスアプリケーションに取り組んでいます。私はEntity Frameworkを使用していますが、それを組み込むための適切な場所がわかりません。

  • Project.Library.Core
  • Project.Library.Models(エンティティデータモデルとエンティティが含まれています):私の場合、私は、これらのライブラリをしました。
  • Project.Library.Auth(認証関連のクラスとユーザー管理クラスが含まれます)。
  • と、エンティティとdbコンテキストを頻繁に使用する同様のクラスです。

この作業を行うために、私はEntity Frameworkをすべてのライブラリに個別にインストールする必要があります。最終的には、多数のASP.NET MVC Webアプリケーションに含まれます。私はEntity FrameworkをWebアプリケーションに直接インストールしていただろうが、このアプリケーションは将来、可能なWindowsストアアプリと共にモバイルアプリケーションを持つだろう。その場合は、ASP.NET Web APIを設定し、既存のクラスライブラリを使用して必要なデータを生成するだけです。これはEntity FrameworkをWebアプリケーションに直接組み込むことから私を守る唯一の要素です。

これはあなたの意見ですか? Entity Frameworkを個別に(適切に機能するために必要な)各ライブラリに組み込むか、単にWebアプリケーションに組み込み、後でWeb APIに同じアプローチを従わせますか?

ありがとうございます。

答えて

2

EntityFrameworkを1つの場所にインストールする必要があります。Project.Library.Models。標準のコードファーストオブジェクトをDTOとして想定すると、コンテキストオブジェクトをデータアクセスレイヤーでラップする限り、直接参照は必要ありません。

このアセンブリへの参照を追加すると、必要なDLLがアプリケーション、Webサイトなどに組み込まれます。EntityFramework.SqlServerを使用している場合、Visual Studioでは一時的な依存関係が検出されないため、

class Include 
{ 
    private Include() { } 
    private SqlProviderServices IncludeSql; 
} 

モデルプロジェクトのどこかに、DLLもコピーされるようにする必要があります。

+0

モデルライブラリを別の依存クラスライブラリに組み込み、dbコンテキスト(var context = new MyDbContext();)のインスタンスを作成しようとしましたが、「型DbContextは参照されていないアセンブリで定義されています。これの背後にある理由は何でしょうか? –

+0

@HumzaKhan DBContextをデータアクセスレイヤーにラップしようとしているかもしれません(データベースにしたいものすべてを公開するオブジェクト) – BradleyDotNET

+0

ああ、そうは思わなかった。私の悪い、ありがとう! –

関連する問題