关于 MVC 中 EF 外键处理的一个小坑

使用 CodeFirst 进行建模。例如,已有以下实体,在MVC中是启用延迟加载的。

    public class User
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

    public class Post
    {
        public int Id { get; set; }
        public User Author { get; set; }
    }

如果直接使用下面的语法进行查询的话,如果对应的`User`没有被EF引擎加载,那么导航属性`Post.Author`会是`null`。

context.Posts.ToArray();

解决方法是,显式说明需要在返回的`Post`中加载`Author`导航属性的内容。

using System.Data.Entity;
//...
context.Posts.Include(p => p.Author).ToArray();

请参阅

Content is available under CC BY-SA 3.0 unless otherwise noted.