实体框架,查找方法将外键留空
Posted
技术标签:
【中文标题】实体框架,查找方法将外键留空【英文标题】:Entity framework, find method leaves foreign key empty 【发布时间】:2015-03-28 07:43:04 【问题描述】:我有一个名为 PageItem 的实体。 PageItem 有一个名为 Page 的属性。 Page 的类型是 Page 类。
类 PageItem 公共页面页面获取;放; ...当我这样查询时:
var item = context.PageItems.Find(5);问题是,item.Page 为空,所以当我保存项目实体框架时会创建一个新的页面记录。
【问题讨论】:
本文描述了问题和可能的解决方案:msdn.microsoft.com/en-us/magazine/dn166926.aspx include 添加一个连接。我不想加入有两个原因。一、性能,二是page之类的很多属性。例如,客户 Cget;设置;, 城市 cty get; set; 所以我必须打很多 Include("...") 电话。 我在上面更新了我的答案。 感谢您的帮助。 【参考方案1】:我学到的总结:
第一:实体框架Find方法不填充嵌套对象的Id值(数据库语言:外键。但我意识到当你保存该实体时,它不会更新外键列,所以什么都没有。
其次:如果您想读取并使用实体的外键值,您应该为每个引用表定义(int/long 不管)属性一个外键。并用 ForeignKey 属性标记它。此外,如果它可以为 null,则将属性类型设为 int?还是长? (可为空)
示例:
公共类客户 公共 ID 获取;放; [外键(“城市”) 公共诠释? City_Id 获取;放; 公共城市城市得到;放;此外,如果您想在 City 上加载layz,则必须将其标记为虚拟。
【讨论】:
以上是关于实体框架,查找方法将外键留空的主要内容,如果未能解决你的问题,请参考以下文章