2010-04-13 127 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