我有一个名为PageItem的实体。 PageItem有一个名为Page的属性。页面类型是Page class。
class PageItem { public Page Page { get; set; } ... }
当我这样查询时:
var item = context.PageItems.Find(5);
问题是,item.Page为null,所以当我保存item实体框架时会创建一个新的页面记录。
答案 0 :(得分:3)
本文介绍了问题和可能的解决方案:https://msdn.microsoft.com/en-us/magazine/dn166926.aspx
答案 1 :(得分:0)
我学到的总结:
第一:实体框架Find方法没有填充嵌套对象的Id值(在数据库语言中:外键。但我意识到,当你保存该实体时,它不会更新外键列,所以没有任何内容被破坏。
Seconly:如果你想阅读并使用实体的foregin键值,你应该为每个referanced表定义一个外键的(int / long)属性。并使用ForeignKey属性标记它。如果它可以为null,则使属性类型为int?还是长的? (可为空的)
样品:
pubclic class Customer { public Id { get; set; } [ForeignKey("City")} public int? City_Id { get; set; } public City City { get; set; } }
此外,如果你想在City上加载layz,你必须将它标记为虚拟。