0

我在 ASP.Net 页面上有一个 GridView。我想将 Gridview 的 DataSource 设置为 Entity Framework 对象的可跟踪集合。我虽然代码应该是这样的:

        this.gvMyGridView.DataSource = entity.MyDetailedItems;
        this.gvMyGridView.DataBind();

但这不显示任何数据。

我正在使用自我跟踪实体,而 MyDetailedItems 是另一个表中的行的导航属性。

4

2 回答 2

1

具有自跟踪实体的 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");
于 2011-03-28T17:40:04.947 回答
0

是的,它可以。如果你没有使用延迟加载(LazyLoadingEnabled 为 true),那么这些关系不会自动加载,你必须这样做:

if (entity.MyDetailedItems.IsLoaded == false)
    entity.MyDetailedItems.Load();

在绑定之前,否则,如果使用 EF 4 打开延迟加载启用,这不再成为问题。

HTH。

于 2011-03-28T16:15:29.260 回答