使用EntityFramework6读取对象

时间:2014-12-16 20:23:04

标签: c# entity-framework asp.net-web-api linq-to-objects

我想读取我在数据库中的所有对象,并使用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对象

2 个答案:

答案 0 :(得分:1)

因为数据值是Paragraphs的导航属性,您只能从Paragraphs访问,所以对于Template,它不是第一级属性,因此将代码更改为:

var aux = db.Templates
.Include("Paragraphs")
.Include("Paragraphs.DataValues");

答案 1 :(得分:0)

导航属性应该是相关实体集合的实体类型。包括一些导航属性意味着将您当前的实体加入某些相关实体。这允许在单个查询中从几个表中急切加载数据。 DataValues不是导航属性 - 它是字段,默认情况下会加载,您不需要包含它:

请注意:

  

复杂类型不应包含导航属性(以及   外键)