2015-01-06 70 views
0

我正在創建基於ASP.NET Web API和EF6的新Web應用程序。Web API&Service Layer&EF6 - 無需存儲庫模式

ProjectName 
-ProjectName.Data (All entity framework stuff) 
-ProjectName.Service (All business logic) 
-ProjectName.Web (ASP.NET Web API All front end logic) 

我讀過噸的信息存儲庫模式& UOW,並對其優點和缺點與EF選項繁多。 (StackOverflow有10,081個「存儲庫模式」結果)。

我們沒有計劃EVER 更改爲不同的數據庫和EF6我讀過,你可以做單元測試沒有額外的抽象。

我趨向於不使用存儲庫或UoW,而是直接從服務層直接與DbContext交談。

任何人都可以提供實現EF6沒有存儲庫,具有服務層

更好的示例項目或github項目在現實生活中使用它?

編輯:

類似的問題:

Implementing Repository pattern and doing Tests

Generic Repository With EF 4.1 what is the point

這些都是關於同一主題的問題,但他們沒有提供一個架構使用EF良好的代碼示例與我描述的相似:

如何在沒有存儲庫/ UoW的情況下管理DbContext生存期?

如何使用ef6新功能實現單元測試?

+0

而http://stackoverflow.com/q/5625746/861716 –

+0

stackoverflow.com/q/5625746/861716和其他答案不提供一個代碼示例 - 「庫目前每個人都使用它們只是因爲有幾十篇有關爲實體框架創建存儲庫的文章,但沒有人真正描述與此決定相關的挑戰「 – RuSh

+0

我知道,但要求代碼示例使這個問題對於StackOverflow來說太廣泛了。因此,這個問題被視爲「過於寬泛」或「基於意見」(因爲這些例子是一種品味問題),或者「不清楚你問什麼」(因爲「例子」可以是*任何*) - 或者作爲重複。 –

回答

0

您的問題太寬泛。實現相同結果的方式太多了。這裏是我的兩分錢 -

雖然你不想使用,你還是要注入依賴使用IoC容器如NinjectAutofacStructureMap

如果是這樣,你只需要注入YourDbContext到Service類。

例如,

public class CustomerService : ICustomerService 
{ 
    private readonly YourDbContext _context; 
    private readonly ICacheService _cacheService; 
    ... 

    public StateService(
     YourDbContext context, 
     ICacheService cacheService, 
     ...) 
    { 
     _context = context; 
     _cacheService = cacheService; 
     ... 
    } 
} 
+0

我如何管理上下文的生命週期?不需要處理? – RuSh

+0

IoC容器將爲您處理*(一旦您在Rootcope中設置對象生命週期)*。它是IoC容器的工作之一。 – Win