我有一个 Comment
类,其中有一个 Author
属性:
public class Comment : IEquatable<Comment>
{
public int ID { get; set; }
[Required]
public virtual User Author { get; set; }
// More properties here
}
我希望用户能够“喜欢”评论,就像在 StackOverflow 上一样。为此,我在 CommentController
中执行了以下操作:
public virtual ActionResult Like(int id)
{
var comment = _session.Single<Comment>(c => c.ID == id);
comment.Likes++;
_session.CommitChanges();
return Json(new { comment.Likes });
}
每当我调用此操作时,我都会收到以下验证错误:
The Author field is required.
Comment
对象来自数据库,因此它确实 有作者。 “有趣”的是,每当我使用 Visual Studio 调试器检查 Author
是否确实丢失时,验证错误都不会触发。
我在这里假设问题是 Author
属性的延迟加载永远不会发生,我是否正确?如果是这样,仅针对这种情况,我如何才能强制填写所有导航属性? (否则我想继续使用延迟加载)
解决这个问题的最佳方法是什么?我走在正确的轨道上吗? 为什么在 EF 明确要求它保存实体时不进行延迟加载?
我们将不胜感激。
最佳答案
你可以使用 Include
急切地获取数据上下文的关系。
context.Comments.Include("Author").Single<Comment>(c => c.ID == id);
关于asp.net-mvc - 延迟加载和 RequiredAttribute 问题 : The XXX field is required,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5656172/