プロジェクトは、このように設定されていますジェクトDbContextは私の溶液中の
- App.Data
- App.Models
- App.Webアプリで
。データ、私はエンティティフレームワークを使用して、抽象的な相互作用にリポジトリの束で自分のデータにアクセスしています。明らかな理由から、私はApp.Webに、Entity FrameworkではなくApp.Dataプロジェクトのみを参照させたいと思います。私は私のコントローラのようになりますリポジトリコンテナへの参照を与えるためにコンストラクタ・インジェクションを使用してい
:
public interface IDataRepository
{
IUserRepository User { get; set; }
IProductRepository Product { get; set; }
// ...
}
public class DataRepository : IDataRepository
{
private readonly AppContext _context;
public DataRepository(AppContext context)
{
_context = context;
}
// ...
}
DataRepository
は(Entity FrameworkののDbContext
から継承)AppContext
オブジェクトを持つことになりますが、そのすべての子リポジトリはデータベースへのアクセスに使用します。
最終的に私は私の問題に遭遇します:DataRepository
でコンストラクタインジェクションをどのように使うのですか?それはコードライブラリでエントリーポイントはありません。AppContext
をApp.Webでブートストラップすることはできません。なぜなら、そのプロジェクトからEntity Frameworkを参照する必要があるからです。
私は何かばかげているのですか?
ないあなたの質問への答え簡略化した例であるが、代わりにリポジトリインタフェースの多くを定義する、単一 'IRepository'インタフェースを定義してみてください/www.cuttingedge.it/blogs/steven/pivot/entry.php?id=92)。これにより、より多くの柔軟性が可能になります。 –
Steven
@Stevenご意見ありがとうございます。 「リポジトリはモデル化されているドメインの一部であり、そのドメインは一般的ではありません。すべてのエンティティを削除できるわけではなく、すべてのエンティティを追加できるわけではなく、すべてのエンティティにリポジトリがあります」。 http://stackoverflow.com/questions/1230571/advantage-of-creating-a-generic-repository-vs-specific-repository-for-each-obje – ajbeaven