我使用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; }
}
答案 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();