实体框架当表为空时包含相关表

时间:2014-11-14 09:47:47

标签: c# .net entity-framework entity-framework-6 entity-framework-6.1

我正在从数据库读取数据到gridview的数据源。我的表2可以是空的。当我尝试绑定Table2中的列时,给出了不包含该列的错误。我检查了来自查询的数据。有Table2但没有列。 Just Count = 0。

如果相关表的列是空的,我怎样才能得到相关表的列?

return entities.Table1
        .Include("Table2")
        .Include("Table3  ")
        .Include("Table2.Table4")
        .Where(results => results.ID == anotherId)
        .ToList();

Table1  one to many  Table2
Table3  one to many  Table1
Table4  one to many  Table2

1 个答案:

答案 0 :(得分:1)

使用EF Table1时,Table2等都是类。 Include(string)方法用于在一个查询中缓存相关记录。您可以删除Include语句,您的查询也会起作用。因此,如果您在Table1和Table2之间的数据库中没有任何已记录的记录,那么Table2属性的count = 0。

将一些相关记录添加到数据库中的Table1和Table2,然后再次执行查询。表2不是DataSetDataTable,而是类。

如果您使用.Include("Table2")

,我认为.Include("Table2.Table4")是多余的事件

注意,如果你想要一对多关系,Table2应该有FK到Table1。

<强> EDITED

如果您使用EF,则不必使用联接来从少数表中收集数据。但你必须明确定义FK。您只需使用var collction = table1.Table2来获取与table1对象相关的所有Table2对象。