我正在从数据库读取数据到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
答案 0 :(得分:1)
使用EF Table1时,Table2等都是类。 Include(string)
方法用于在一个查询中缓存相关记录。您可以删除Include
语句,您的查询也会起作用。因此,如果您在Table1和Table2之间的数据库中没有任何已记录的记录,那么Table2属性的count = 0。
将一些相关记录添加到数据库中的Table1和Table2,然后再次执行查询。表2不是DataSet
或DataTable
,而是类。
如果您使用.Include("Table2")
.Include("Table2.Table4")
是多余的事件
注意,如果你想要一对多关系,Table2应该有FK到Table1。
<强> EDITED 强>
如果您使用EF,则不必使用联接来从少数表中收集数据。但你必须明确定义FK。您只需使用var collction = table1.Table2
来获取与table1对象相关的所有Table2对象。