【发布时间】:2017-01-25 00:43:38
【问题描述】:
我有一个简单的论坛应用程序,每个主题都有很多帖子,每个帖子可能会被多个用户喜欢。应用实体模型如下:
public class ForumTopic
{
public int ForumTopicId { get; set; }
public string Subject { get; set; }
public string UserId { get; set; }
public virtual User User { get; set; }
public virtual ICollection<ForumPost> ForumPosts { get; set; }
}
public class ForumPost
{
public int ForumPostId { get; set; }
public string Message { get; set; }
public int ForumTopicId { get; set; }
public virtual ForumTopic ForumTopic { get; set; }
public string UserId { get; set; }
public virtual User User { get; set; }
public virtual ICollection<ForumPostFavorite> ForumPostFavorites { get; set; }
}
public class ForumPostFavorite
{
public string UserId { get; set; }
public User User { get; set; }
public int ForumPostId { get; set; }
public ForumPost ForumPost { get; set; }
}
我想获取当前用户最喜欢的帖子如下。但是此查询会引发“由于对象的当前状态,操作无效”异常。我确信这个查询在实体框架 6 中无异常运行,但是在实体框架核心中会发生这个异常。
public IActionResult Favorite()
{
var userId = _userManager.GetUserId(User);
var list = _dbContext.ForumPostFavorites
.Where(e => e.UserId == userId)
.Select(e => e.ForumPost)
.Take(10)
.Select(e => new ForumPostFavoriteVm
{
ForumPostId = e.ForumPostId,
ForumTopicId = e.ForumTopicId,
Message = e.Message,
Subject = e.ForumTopic.Subject,
}).ToList();
return View(list);
}
当我从查询中删除这一行 "Subject = e.ForumTopic.Subject" 时,查询将毫无例外地运行。
【问题讨论】:
标签: entity-framework entity-framework-core