0

Что является эквивалентом этих линий EF5 с SimpleMembershipProvider:Initialize базы данных с Entity Framework 6 Code First

if (!WebMatrix.WebData.WebSecurity.Initialized) 
{ 
    WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true); 
} 

В EF6 с ASP.NET-Identity?

Эти строки поступают из файла global.asax по методу protected void Application_Start().

ответ

1

Реализация Entity Framework для ASP.NET Identity использует Code First для создания сопоставлений и инициализации базы данных. Он просто использует стандартный EF Code First для инициализации базы данных, поэтому на самом деле нет эквивалентного кода, на который было указано выше (они фактически являются вызовами API простого членства, а не EF).

При первом обращении к ApplicationDbContext (в шаблоне MVC по умолчанию это происходит в AccountController), EF запускает инициализатор контекста. По умолчанию используется инициализатор CreateDatabaseIfNotExists, который проверяет, созданы ли таблицы и при необходимости создает их.

Простой запрос членства указывает имя используемой строки подключения. В ASP.NET Identity это устанавливается в конструкторе ApplicationDbContextIdentityModels.cs).

Метод Simple Membership InitializeDatabaseConnection() также принимает параметры для имен таблиц и столбцов. IdentityDbContext (который наследует) содержит некоторые сопоставления по умолчанию для сопоставления таблицам с префиксом «AspNet». Вы должны иметь возможность изменять их, переопределяя OnModelCreating() в ApplicationDbContext и поставляя пользовательские сопоставления.

И поскольку это просто код EF Во-первых, вы также можете создать свой собственный пользовательский инициализатор базы данных, где вы можете указать метод Seed(), который добавит некоторые начальные роли и пользователей, например.

Смежные вопросы