2013-10-02 64 views
6

我有一個在Mvc 4.0中的項目。該項目已經將EF包含在它的數據庫優先方法中。我必須使用存儲庫模式來做一些工作。我已經閱讀了許多博客,我仍然對如何將實體框架與Repository進行實際整合相混淆。我必須從哪裏開始。我正在讀這exampleMvc 4.0中的存儲庫模式

解釋是好的,但我怎麼能合併這兩個概念。我試過創建一個模型類,因爲上面的鏈接已經建議,但在上面的學生類的鏈接,他們已經採取了Icollection列表註冊是數據庫中的表格。我也通過我的表名到列表,但不工作。

我已完成的全部流程。請告訴我,如果這個權利或錯誤 第一步:我創建了一個名爲學校的數據庫 第二步:我在項目中添加了實體框架。 第3步:我現在創建一個與Student表具有相同屬性的模型。第四步:我現在被困住了。我將如何創建一個Icollection? 請儘快提供幫助。我會很感激你。

+1

[這裏](HTTP://www.codeproject。com/Tips/572761/Generic-repository-pattern-using-EF-with-Dependenc)是一篇關於我在自己的項目中實現的通用存儲庫模式的非常豐富的文章,我會推薦。 – user65439

+0

有人請告訴我,我必須遵循代碼優先方法中存儲庫模式的步驟,但項目中已有實體框架。請,它會幫助我很多。 – Sandy

+0

[here](http://weblogs.asp.net/dotnetstories/archive/2013/10/01/using-the-repository-pattern-in-an-asp-net-mvc-4-0-application.aspx )是一個實用教程,您可以在應用程序中閱讀和實現此模式 –

回答

8

看看這個問題Unit Of Work & Generic Repository with Entity Framework 5我認爲這裏描述得很好。

下面是完整的軟件包,你可以使用http://www.nuget.org/packages/Repository.EntityFramework/

還有一鏈接:http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application

但是在實現存儲庫模式之前,我會建議你考慮「你真的需要它嗎?」。

+1

非常同意@Avenged問題,這裏是關於它的文章:http://ayende.com/blog/3955/repository-is-the-new-singleton – Giedrius

+1

我同意「你真的需要它嗎」嗎?我經常爲一些業務邏輯使用一個簡單的服務「層」。數據訪問可以通過ORM進行。也就是說,我的應用程序通常較小,並且一次只限制在100個以下的用戶。存儲庫模式可能對更大的應用程序更有用。 – tonyapolis

5

如果你想看到的庫是如何實現的話,我建議你檢查了一些開源項目,真實的場景。

NOP商務部 使用存儲庫模式和依賴注入 http://nopcommerce.codeplex.com/

影片 還有一個ASP.NET視頻系列(免費)關於建立一個MVC店面 http://www.asp.net/mvc/videos/mvc-1/aspnet-mvc-storefront/aspnet-mvc-storefront-part-2-the-repository-pattern

Open Access示例 Telerik使用ORM(OpenAccess)提供了一些很好的示例。即使它使用不同的ORM,存儲庫模式仍適用於EntityFramework。 http://www.telerik.com/products/orm.aspx

1
public class AccountBrandRepository : GenericRepository<AccountBrand> 
{ 
    TestEntities _context; 

    public TestRepository(IUnitOfWork unitOfWork) 
     : base(unitOfWork as VoltEntities) 
    { 
     if (unitOfWork == null) 
      throw new ArgumentNullException("unitOfWork"); 
     _context = unitOfWork as TestEntities; 
    } 
} 
+1

也許你可以添加一些上下文的答案? – EWit