实体框架,find方法将外键留空

时间:2015-01-29 06:55:29

标签: entity-framework

我有一个名为PageItem的实体。 PageItem有一个名为Page的属性。页面类型是Page class。


       class PageItem {
           public Page Page { get; set; }
           ...
       }

当我这样查询时:


var item = context.PageItems.Find(5);

问题是,item.Page为null,所以当我保存item实体框架时会创建一个新的页面记录。

2 个答案:

答案 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,你必须将它标记为虚拟。