Требует ли Identity Owin LazyLoading?

asp.net-identity asp.net-mvc-5 c# entity-framework-6 owin

Вопрос

tl; dr: Identity, похоже, требует, чтобы LazyLoading НЕ был отключен; это правда, и что является самым чистым обходным путем?

Я провел некоторое базовое тестирование AB на простом веб-приложении C # ASP.NET 4.5.1 MVC-5, используя EntityFramework 6.0.2, Identity EntityFramework 1.0.0 и Identity Owin 1.0.0, и кажется, что Owin требует, чтобы ленивая загрузка НЕ отключен в конструкторе ApplicationContext.

Чтобы реплицировать проблему, просто создайте быстрое приложение MVC с помощью Visual Studio 2013, используйте шаблон MVC, оставьте все по умолчанию, кроме раскомментирования строки: «app.UseGoogleAuthentication (); в App_Start / Startup.Auth.cs. Запустите приложение и используйте Google для входа в систему, заполните сокращенную страницу регистрации, в которую вы попадете и зайдите в аккаунт / управление. Вы должны увидеть две кнопки для Google внизу. Остановите приложение.

Теперь перейдите в ApplicationContext.cs и измените конструктор, как показано в этом фрагменте кода:

public ApplicationContext() : base("DefaultConnection") { } //Works!

public ApplicationContext() : base("DefaultConnection") 
{
    this.Configuration.LazyLoadingEnabled = false;
} //Does not work

Повторите тест. Только одна кнопка Google должна быть видимой. С LazyLoadingEnabled = false роли пользователя, логины (также претензий) не загружаются.

Моя теория заключается в том, что это надзор Microsoft / «будущая функция», поскольку Identity EntityFramework и Identity Owin являются версиями 1.0.0.

Мой вопрос в том, можно ли подтвердить этот тест, а какая самая чистая работа?

Для моих целей я просто использую .ToList () и другие методы для принудительного запуска EagerLoading, когда я хочу его использовать. Мне действительно не нужно отключать LazyLoading, это просто безопасный способ кодирования, если вы хотите всегда использовать активную загрузку. т.е. вы пропускаете одно место, оно делает это для производства, и у вас есть хорошая ошибка, когда в некоторых видах вы выполняете итерацию через Model и для Model.xy y == null и соединение с базой данных было удалено.

Давайте не будем входить в Identity против других (более надежных) методов или:

using (DatabaseContext) { //Database query } 

или вызывать распоряжаться при каждом методе, а также удалять соединение автоматически. Это сценарий, в котором вы должны использовать Identity Owin и утилизировать все обращения к базе данных ASAP. Там должно быть что-то, чего я пропустил, или, может быть, Идентичность на самом деле просто неполна прямо сейчас.

Принятый ответ

Да, это была ошибка, которую мы исправили в версии 2.0.0-alpha1. Если lazyLoading явно отключен раньше, EF не будет автоматически загружать связанные пользовательские объекты (логины / заявки / роли)




Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему