Я использую EF6/.Net 4.5.1 для извлечения данных для списка в пользовательском контроле на веб-форме. Я изменил ApplicationUser, чтобы включить свойство навигации [1: 1], используя атрибут FK, который отлично работает.Принудительное использование приложения EF для загрузки свойств навигации
public class ApplicationUser : IdentityUser
{
public ApplicationUser()
{
CreateDate = DateTime.Now;
:\\ deleted stuff
}
public int TaxID { get; set; }
public System.Guid ApplicationId { get; set; }
:\\ deleted stuff
[ForeignKey("TaxID")]
public virtual Personnel Personnel { get; set; }
}
Модель была перенесена и протестирована для хранения и извлечения.
Все работает нормально с полной обратной передачей.
Однако я добавил кнопку на веб-странице, которая открывает и закрывает div, который содержит UserControl, ответственный за создание нового пользователя. UserControl выдает событие, которое потребляется контейнером. Затем контейнер закрывает div, содержащий UC, снова открывает div с Listview, вызывает Listview DataBind(), который вызывает GetAllUsers().
Код:
public IQueryable<ApplicationUser> GetAllUsers()
{
var manager = HttpContext.Current.GetOwinContext()
.GetUserManager<ApplicationUserManager>();
var users = manager.Users.OrderBy(c => c.TaxID);
return users;
}
Проблема возникает после того, как UserControl возвращает управление контейнер.
Первое извлечение - всегда имеет ApplicationUser, у которого НЕ загружено свойство навигации. Это означает, что определенные поля никогда не заполняются в списке.
Последующие извлечения (обновление страницы или вызов Редактирование строки), однако, похоже, приводят к появлению свойств навигации.
Как я могу заставить EF Включить навигационное свойство. В этом контексте не существует синтаксиса manager.Users.Include().
Только объекты, перечисленные как dynamicproxies ApplicationUser, похоже, имеют навигационное свойство. Поэтому я озадачен тем, почему первоначальное извлечение никогда не является динамическим прокси.
Датаппарат listview требует, чтобы IQueryable реализовал свой пейджинг. Я не вызываю .ToList(), поскольку Datapager знает, когда это работает отлично ... после обновления полной страницы. Почему требуется обновление страницы для свойств навигации?
Любая помощь ... заранее спасибо ...
Это сработало! Спасибо!!! Identity Framework действительно заставляет вас идти хммм ... – Renshai