我想读取我在数据库中的所有对象,并使用web api控制器返回它们。
有3级表。模板有一个段落列表,一个段落有一个DataValues列表。
阅读模板和段落很简单:
Database db = new Database();
db.Configuration.ProxyCreationEnabled = false;
db.Configuration.LazyLoadingEnabled = false;
var aux = db.Templates.Include("Paragraphs");
如果我还添加像这样的DataVlues
var aux = db.Templates.Include("Paragraphs").Include("DataValues");
我收到此消息:
A specified Include path is not valid. The EntityType 'Database.Template' does not declare a navigation property with the name 'DataValues'.
我知道这个错误是正常的,但是如何以这种方式读取DataValues?
我必须从EF(POCO)
创建这个值的POCO对象答案 0 :(得分:1)
因为数据值是Paragraphs的导航属性,您只能从Paragraphs访问,所以对于Template,它不是第一级属性,因此将代码更改为:
var aux = db.Templates
.Include("Paragraphs")
.Include("Paragraphs.DataValues");
答案 1 :(得分:0)
导航属性应该是相关实体集合的实体类型。包括一些导航属性意味着将您当前的实体加入某些相关实体。这允许在单个查询中从几个表中急切加载数据。 DataValues
不是导航属性 - 它是字段,默认情况下会加载,您不需要包含它:
请注意:
复杂类型不应包含导航属性(以及 外键)