【发布时间】:2012-02-27 10:02:57
【问题描述】:
作为 Entity Framework Code First 测试的一部分,我正在测试更改跟踪。在一个小型测试数据库中,我在一个表中有两辆汽车,我对其运行测试方法:
Debug.WriteLine("Reading cars...");
var cars = context.Cars.ToArray();
Debug.WriteLine("Updating top speed of first car...");
Debug.WriteLine(string.Format("Type of car[0] is {0}", cars[0].GetType().ToString()));
cars[0].TopSpeed = 260;
Debug.WriteLine("Saving changes...");
context.SaveChanges();
我已将跟踪输出添加到Car 类的TopSpeed 和Brand 属性的getter 和setter,以查看它们是如何被访问的。 TopSpeed 是 int?,Brand 是 Brand 实体的导航属性。运行上面的代码会得到下面的输出。
对象的类型是用于更改跟踪的 EF 动态代理。尽管如此,当调用SaveChanges() 时,仍会读取未更改的 XYZ987 汽车的属性。我认为更改跟踪会导致 EF 仅读取已知更改的对象,还是我遗漏了什么?是否需要添加其他内容才能启用更改跟踪?
【问题讨论】:
标签: c# .net entity-framework entity-framework-4.3