I'm reading data from database to gridview's datasource. My Table2 can be empty. When I try to bind columns from Table2 gives me error that doesn't contain that column. I checked the data that was coming from query. There is Table2 but not columns. Just Count = 0.
How can i get columns of related table even if it is empty?
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
When you use EF Table1, Table2, etc. are all classes.
Include(string) method is used for caching related records in one query. You can remove
Include statements and your query will work similar. So if you don't have any realted records in your DB between Table1 and Table2, then you get count = 0 for Table2 property.
Add some related records to your DB to Table1 and Table2 and execute your query again. Table2 is not
DataTable, but class.
I think event that
.Include("Table2") is redundant if you use
Notice, that Table2 should have FK to Table1 if you want one-to-many relation.
If you use EF you don't have to use joins to collect data from few tables. But you have to have FKs well defined. You just use
var collction = table1.Table2 to get all Table2 objects related to table1 object.