存储库模式和实体框架

时间:2010-04-13 19:14:58

标签: entity-framework asp.net-mvc-2 repository-pattern

我想使用ASP.NET MVC 2和Entity Framework进行存储库模式的实现,但是我在这个过程中遇到了一些问题。

首先,我有2个实体,它们之间有关系,如Order和Product。当我生成我的dbml文件时,它为我提供了一个类订单,其中包含一个映射“ProductSet”的属性和一个类产品,其属性映射了与产品相关的订单。

所以我使用基本的CRUD操作创建了像IReporitory的Repository模式,在我的控制器中我实现了ProductRepository或OrderRepository。

当我尝试创建产品并且必须在其上分配我的订单时出现问题,例如ProductOne.Order = _orderRepository.Find(orderId);

这个操作给了我一些奇怪的行为,我不知道它有什么问题。

1 个答案:

答案 0 :(得分:2)

问题有点缺乏细节,但我的猜测是你在两个存储库中使用两个单独的ObjectContexts而不是一个。您需要管理ObjectContext的生命周期,将其范围限定为单个Web请求,并且在该Web请求周期的生命周期内只有一个ObjectContext。

Google搜索“web scoped objectcontext”或“objectcontext lifetime”。

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