实体框架加载

时间:2011-10-22 08:58:52

标签: entity-framework entity-framework-4.1

我使用Entity Framework 4.1(Code First)作为O / R映射框架:

我有三个实体:Post,PostForUser和User,而PostForUser只与一个帖子和一个用户相关联。

现在我想获取给定用户的所有帖子,并另外加载创建帖子的用户:

var posts = _dbContext.PostsForUser
    .Include("Post.ByUser")
    .Where(x => x.WasRead == false && x.User.Id == CurrentUser.Id)
    .Select(x => x.Post)
    .ToArray();

使用上面的查询,永远不会加载“ByUser”属性。我根本不使用延迟加载,但我仍然无法使加载正常工作。

没有注册任何自定义映射配置或特殊约定。只需以下实体定义:

public class Post
{
    public int Id { get; set; }        
    public string Content { get; set; }
    public DateTime Date { get; set; }
    public User ByUser { get; set; }
}

public class PostForUser
{
    public int Id { get; set; }
    public User User { get; set; }
    public Post Post { get; set; }
    public bool WasRead { get; set; }
}

1 个答案:

答案 0 :(得分:0)

您的包含.Include("Post.ByUser")适用于PostForUser,但您选择的是Post,因此包含应转到选择内容:

var posts = _dbContext.PostsForUser
            .Where(x => x.WasRead == false && x.User.Id == CurrentUser.Id)
            .Select(x => x.Post).Include("ByUser")
            .ToArray();