Can a Entity Framework Trackable collection be bound to an ASP.Net Gridview?
Asked Answered
M

2

0

I've got a GridView on a ASP.Net page. I would like to set the DataSource of the Gridview to a trackable collection of Entity Framework objects. I though the code should look like this:

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

But this doesn't display any data.

I am using self tracking entities and the MyDetailedItems is a navigation property to rows from another table.

Melisandra answered 28/3, 2011 at 15:41 Comment(0)
Z
1

EF 4 with self tracking entities does not support lazy loading so you must explicitly load navigation properties if you want to use them. Use either:

// loading entity with related entities
var entity = context.Entities.Include("MyDetailedItems").Single(...);

or

// loading related entities for already loaded entity
context.LoadProperty(entity, "MyDetailedItems");
Zohar answered 28/3, 2011 at 17:40 Comment(0)
M
0

Yes, it can. If you are not using the lazy loading (LazyLoadingEnabled to true), then these relationships do not automatically load, and you have to do:

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

Before binding, otherwise, if using EF 4 turn on lazy loading enabled, and this no longer becomes a problem.

HTH.

Macdougall answered 28/3, 2011 at 16:15 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.