实体框架不包含嵌套属性我有两个相关的实体,分别命名为DataTag和TagSource如下:publicclassDataTag:BaseModel{[Column("DataTagId")]publicoverrideGuidID{得到;放;}publicstringTag{get;放;}publicGuidTagSourceId{得到;放;}publicTagSourceTagSource{得到;放;}}publicclassTagSource:BaseModel{[Column("TagSourceId")]publicoverrideGuidID{get;放;}公共字符串描述{得到;放;}publicboolIsInternal{得到;放;}publicstringSource{get;放;}公共ICollectionDataTags{得到;放;我允许用户通过“/api/DataTags?Include=TagSource”这样的URL来包含导航属性。问题是当我包含TagSource时,它??还包含该对象中的DataTags集合,除非用户指定它(例如“/api/DataTags?Include=TagSource.DataTags”),否则我不想要它。有什么办法吗?当我在包含TagSource时停止加载该属性时?我尝试将属性设置为虚拟并全局关闭延迟加载,但这没有用。我没有将它们标记为虚拟的原因是因为我使用AutoMapper而我只是想要包含用户指定的导航属性。如评论中所述,您需要创建DTO对象。这是一篇详细介绍如何使用WebAPI执行此操作的好文章http://www.asp.net/web-api/overview/data/using-web-api-with-entity-framework/part-5EDIT。这样做的问题是,对于每个可能的结果,您都需要很多不同的DTO对象,这会让人感到困惑。如果您的返回类型是JSON,您可以将此属性添加到您的属性:[JsonProperty(NullValueHandling=NullValueHandling.Ignore)]首先:为我的英语道歉。第二:代码优先数据库模型有问题,它以这种方式创建外键:publicvirtualCollectionObjects{get;设置;}公共虚拟CollectionObjects{get;set;}我通过将属性setter设为私有来实现此目的来寻找解决方法:publicvirtualCollectionObjects{get;privateset;}然后EF无法填充Objects集合,因为使用私有集时只能在构造函数中赋值。以上是C#学习教程:实体框架包含所有内容,没有嵌套属性共享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
