如何解决延迟加载和RequiredAttribute问题:XXX字段为必填
|| 我有一个Comment
类,其中包括一个Author
属性:
public class Comment : IEquatable<Comment>
{
public int ID { get; set; }
[Required]
public virtual User Author { get; set; }
// More properties here
}
我希望用户能够“喜欢”评论,就像此处的StackOverflow一样。为此,我在“ѭ3”中采取了以下措施:
public virtual ActionResult Like(int id)
{
var comment = _session.Single<Comment>(c => c.ID == id);
comment.Likes++;
_session.CommitChanges();
return Json(new { comment.Likes });
}
每当我调用此操作时,都会收到以下验证错误:
作者字段是必填字段。
Comment
对象来自数据库,因此它确实有一个作者。有趣的是,每当我使用Visual Studio调试器检查ѭ1是否确实丢失时,都不会触发验证错误。
我是否在这里假设问题是Author
属性的延迟加载从未发生是正确的吗?如果是这样,仅在这种情况下,我如何才能强制填写所有导航属性? (否则,我想继续进行延迟加载)
解决这个问题的最新方法是什么?我是否在正确的轨道上?
为什么在EF明确要求它保存实体的情况下没有发生延迟加载?
任何帮助将不胜感激。
解决方法
您可以使用
Include
急切地获取数据上下文上的关系。
context.Comments.Include(\"Author\").Single<Comment>(c => c.ID == id);
,我有类似的问题。以下应该可以工作(启用LazyLoading)。
public virtual ActionResult Like(int id)
{
var comment = _session.Single<Comment>(c => c.ID == id);
comment.Likes++;
if(TryUpdateModel(comment))
{
_session.CommitChanges();
}
return Json(new { comment.Likes });
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。