c#-为什么实体框架中的子实体包括引用父实体的虚拟属性?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-为什么实体框架中的子实体包括引用父实体的虚拟属性?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1424字,纯文字阅读大概需要3分钟。
内容图文
我有以下与EF5一起使用的类
public class Question
{
public Question()
{
this.Answers = new List<Answer>();
}
public int QuestionId { get; set; }
...
...
public string Title { get; set; }
public virtual ICollection<Answer> Answers { get; set; }
}
public class Answer
{
public int AnswerId { get; set; }
public string Text { get; set; }
public int QuestionId { get; set; }
public virtual Question Question { get; set; }
}
有人可以告诉我为什么需要该物业:
public virtual Question Question { get; set; }
如果我从不打算进行自动延迟加载,而是打算有时将其包含在一个对象中,那么我是否需要像这样的虚拟属性:
var questions = _questionsRepository.GetAll()
.Include(a => a.Answers);
我问的原因是因为当与Web API一起使用时,它给了我json循环引用错误.
解决方法:
在不查看您的映射配置的情况下,我可能需要一点假设,但是我怀疑您正在使用“独立关联”来定义实体之间的关联关系.
这是Entity Framework的功能,其中对象之间的关系被建模为引用,因此您实际上不需要在对象上存在外键属性;这确实意味着您的两个实体都需要定义一个导航属性,以便实体框架能够管理该关联.在您的情况下,您需要在Answers实体上具有Question属性.
在更高版本的Entity Framework(我相信从4开始)中,您可以使用其他类型的关联“外键关联”,这将允许您使用外键属性形成关联,这应允许您删除Question导航属性(这可能会或可能不会帮助您).
这里有一个更好的解释:Code First: Independent associations vs. Foreign key associations?
就是说,如果您的关联正常运行,那么您的问题可能出在您如何使用实体/ Web API上(我对此不太了解,无法发表评论).
祝你好运= D
内容总结
以上是互联网集市为您收集整理的c#-为什么实体框架中的子实体包括引用父实体的虚拟属性?全部内容,希望文章能够帮你解决c#-为什么实体框架中的子实体包括引用父实体的虚拟属性?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。