我在ASP.Net页面上有一个GridView。我想将Gridview的DataSource设置为可跟踪的Entity Framework对象集合。我虽然代码应该是这样的:
this.gvMyGridView.DataSource = entity.MyDetailedItems;
this.gvMyGridView.DataBind();
但这不会显示任何数据。
我正在使用自我跟踪实体,而MyDetailedItems是来自另一个表的行的导航属性。
答案 0 :(得分:1)
带有self tracking entities does not support lazy loading的EF 4,因此如果要使用它们,必须明确加载导航属性。使用:
// loading entity with related entities
var entity = context.Entities.Include("MyDetailedItems").Single(...);
或
// loading related entities for already loaded entity
context.LoadProperty(entity, "MyDetailedItems");
答案 1 :(得分:0)
是的,它可以。如果您没有使用延迟加载(LazyLoadingEnabled为true),那么这些关系不会自动加载,您必须这样做:
if (entity.MyDetailedItems.IsLoaded == false)
entity.MyDetailedItems.Load();
在绑定之前,否则,如果使用EF 4打开延迟加载,则不再成为问题。
HTH。