我的DbContext如何包含两次相同的实体?

时间:2012-04-16 18:42:24

标签: c# entity-framework entity-framework-4.3

我必须做一些体操来更新一个包含对另一个实体的引用的实体,我不明白为什么,因为在我的边测试项目中它没有工作。

问题似乎是DbContext包含多个具有相同主键但其他属性已更改的实体。

所以,我必须做类似下面的代码来正确设置引用。

如果我不这样做,我会在数据库中创建一个新的“Tax”实体,这不是我想要的,而是对现有实体的引用。

 if (!Database.Set<Tax>().Local.Any(e => e.ID == invoiceDetail.Tax.ID))
    Database.Taxes.Attach(invoiceDetail.Tax);
 else
    invoiceDetail.Tax = Database.Set<Tax>().Local.Single(e => e.ID == invoiceDetail.Tax.ID);

为什么我必须手动检查Local对象才能使其工作?为什么DbContext包含多个具有主键相同的实体实例?我在Code First(Poco)中使用EF4.3。

0 个答案:

没有答案