在我的解決方案的項目設置是這樣的:與注射的DbContext到庫類庫
- App.Data
- App.Models
- App.Web
在應用程序。數據,我使用實體框架來訪問我的數據與一堆存儲庫來抽象與它的交互。出於顯而易見的原因,我希望我的App.Web僅引用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
將有AppContext
對象(從實體框架的DbContext
繼承),所有的孩子存儲庫將用於訪問數據庫。
因此,最後我們來到我的問題:考慮到它是一個代碼庫並沒有入口點,我該如何在DataRepository
上使用構造函數注入?我無法在App.Web中引導AppContext
,因爲那時我必須從該項目中引用實體框架。
或者我只是在做一些愚蠢的事情?
不回答你的問題,但是,而不是定義了大量的資料庫界面,嘗試制定一個統一'IRepository'接口,解釋[這裏](HTTP:/ /www.cuttingedge.it/blogs/steven/pivot/entry.php?id=92)。這允許更多的靈活性。 –
Steven
2013-05-10 08:48:56
@Steven感謝您的評論。由於這個原因,我更喜歡特定的存儲庫:「存儲庫是被建模的域的一部分,並且該域不是通用的。不是每個實體都可以被刪除,不是每個實體都可以被添加,並不是每個實體都有一個存儲庫。 http://stackoverflow.com/questions/1230571/advantage-of-creating-a-generic-repository-vs-specific-repository-for-each-obje – ajbeaven 2013-05-10 08:53:24