2014-03-06 72 views
0

我正在使用EF 4.1并希望使用临时对象执行一些检查。实体框架使用临时对象

我遇到的问题是,只要我保存任何更改,这些对象就会写回数据库。我试图分离这些对象,但是随后整个对象图被切碎了,我无法访问这些检查所需的引用对象。

我的代码基本上是这样的:

createTempOrder() 
{ 
    Order order = new Order(); 
    order.Customer = dbContext.Customers.Single(c => c.ID == cID); 
    dbContext.Detach(order); 
    return order; 
} 

是否有EF处理临时对象的最佳做法或做我需要重写支队程序?

在此先感谢

回答

0

如果你不想EF跟踪你的实体,您可以使用AsNoTracking()方法:当然

order = dbContext.Orders.AsNoTracking().Single(o => o.ID == oID); 

这个作品,如果订单是由EF管理的实体。

+0

我的订单未包含在数据库中。它只能在代码中存在,这就是为什么我不能设置Notracking属性的原因。 – narain

+0

如果我理解你正在尝试实现的内容,可以创建一个新的Context实例来执行这些检查然后进行处理。通过这种方式,您所做的更改不应在其他情况下“可见”。 – Mones

+0

我仍然需要在另一个上下文中引用的对象。在订单检查完成之后,将客户实体添加到报告中,然后将报告添加到数据库中。 – narain