自从首先从EF 4数据库(.edmx)升级到EF 6代码后,我遇到了一些代码问题。
我有一个名为Test的表,还有一个名为Student的表。每个学生都可以进行多次测试,并且表格已加入(studentId是“学生”中的主键,而“测试”中是外键)。
如果我在代码中创建一个新的测试,然后将其添加到数据库,那一切都正常。问题是当我尝试读取EF生成的学生属性时。
var test = new test { studentId = 4, testName = "My Test", result = "B" };
db.Tests.Add(test);
db.SaveChanges();
var studentName = test.Student.Name; // this gives an error - Student is null!
在Entity Framework 4下,我可以像上面一样添加一行,然后一旦我保存了更改,外部对象就会可用。
EF 6中有任何变化吗?唯一的另一个变化是MARS也被禁用了。这可能与此有关吗?
这是该项目的一个普遍问题,但我希望这是我可以轻松解决的问题。
答案 0 :(得分:1)
实体类实例属于实体类型test
,而不是处理延迟加载的代理,因此导航属性不会延迟加载。
更新:尝试以下操作来创建实体对象w / proxy
var test = db.Tests.Create();