Может ли отслеживаемая коллекция Entity Framework быть привязанной к ASP.Net Gridview?
У меня есть GridView на странице ASP.Net. Я хотел бы установить источник данных Gridview для отслеживаемой коллекции объектов Entity Framework. Я думаю, что код должен выглядеть так:
this.gvMyGridView.DataSource = entity.MyDetailedItems;
this.gvMyGridView.DataBind();
Но это не отображает никаких данных.
Я использую объекты самопроверки, а MyDetailedItems - это свойство навигации по строкам из другой таблицы.
2 ответа
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");
Да, оно может. Если вы не используете отложенную загрузку (для LazyLoadingEnabled установлено значение true), эти отношения не загружаются автоматически, и вы должны сделать:
if (entity.MyDetailedItems.IsLoaded == false)
entity.MyDetailedItems.Load();
В противном случае, если используется EF 4, включите отложенную загрузку, и это больше не станет проблемой.
НТН.