2010-04-13 132 views
0

我想使用ASP.NET MVC 2和實體框架與存儲庫模式的實現,但我在這個過程中有一些問題。存儲庫模式和實體框架

首先,我有兩個實體之間有關係,如訂單和產品。當我生成我的dbml文件時,它給了我一個類訂單帶有一個屬性,該屬性映射「產品集」和一個類產品具有一個屬性,該屬性映射產品自身相關的訂單。

因此,我使用基本的CRUD操作創建了像IReporitory一樣的Repository模式,並在我的控制器中實現了ProductRepository或OrderRepository。

的問題時,當我嘗試創建產品和具有分配就可以了我的訂單,像ProductOne.Order = _orderRepository.Find(orderId);

那次行動給了我一些奇怪的行爲,我無法找出什麼是錯的。

+3

請定義你的意思是*奇怪的行爲*。 – 2010-04-13 19:16:28

+0

已經解決了Darin,thanx。我對奇怪行爲的意思是,當我對相關實體進行一些更改時,發生了一些不同類型的異常。除此之外,我用httpcontext共享變量解決了另一個答案中解釋的方法問題。 – user319923 2010-04-15 14:50:44

回答

2

這個問題有點缺乏細節,但我的猜測是,你在兩個倉庫中使用了兩個單獨的ObjectContext而不是一個倉庫。您將需要管理ObjectContext的生命週期,以將其範圍限定爲單個Web請求,並且在該Web請求週期的整個生命週期中只有一個ObjectContext。

Google搜索'web scoped objectcontext'或'objectcontext lifetime'。

例如http://dotnetslackers.com/articles/ado_net/Managing-Entity-Framework-ObjectContext-lifespan-and-scope-in-n-layered-ASP-NET-applications.aspx

+0

Thx的信息Hightechrider, 這正是問題所在,但我是一個新手在存儲庫模式,我不知道如何控制這個,也許與單身模式,我不知道。有沒有人有我可以這樣做的一些例子? – user319923 2010-04-13 20:26:58

+0

我添加了一篇文章的參考資料,介紹瞭如何管理ObjectContext生命週期。將它定向到Web請求生命週期效果很好,恕我直言。 – 2010-04-13 21:38:37

+0

Thx非常高科技。 – user319923 2010-04-14 11:53:34