Я хочу использовать Entity Framework ASP Identity, но я не хочу, чтобы EF генерировал таблицы для меня

#c# #asp.net #entity-framework #entity-framework-6 #asp.net-identity

#c# #asp.net #entity-framework #entity-framework-6 #asp.net-identity

Вопрос:

Я создал новое приложение ASP MVC 5 (с идентификатором asp).
Я использую IdentityDbContext class для размещения всех объектов моего домена внутри.

 public class SecurityContext : IdentityDbContext{
...
public DbSet<Country> Countries { get; set; }
 

Когда я впервые создал пользователя, были созданы все таблицы базы данных (таблицы идентификаторов), включая мою Country таблицу.
Но теперь я добавил новую таблицу в базу данных (созданную из Management Studio) и добавил в IdentityDbContext :

 public DbSet<City> Cities { get; set; }
 

Но когда я запускаю приложение сейчас, я получаю сообщение об ошибке:

Модель, поддерживающая контекст SecurityContext, изменилась с момента создания базы данных. Рассмотрите возможность использования миграции Code First для обновления базы данных.

Если я удалю все таблицы и снова запущу приложение City , оно будет создано, но я не хочу быть более гибким.
Итак, что я хочу сделать, так это то, что я могу создавать все таблицы базы данных и создавать свои классы POCO в проекте позже, чтобы я мог использовать EF для доступа к данным.
Я не хочу, чтобы EF создавал классы для меня (я чувствую себя более защищенным, когда подключаю эти вещи в одиночку).
Также (я знаю, что это возможно, но просто не знаю, как) могу ли я запретить asp Identity создавать только таблицы?

Подводя итог всему вопросу. Я хочу использовать EF, но я хочу сам создать свою базу данных, включая Identity таблицы. Как я могу это сделать?

Комментарии:

1. Сначала используйте базу данных EF msdn.microsoft.com/en-us/data/jj206878.aspx

Ответ №1:

Вы можете отключить инициализатор EF и самостоятельно управлять таблицами и сопоставлениями.

Отключите инициализатор базы данных в конструкторе следующим образом…

 public SecurityContext()
    : base("DefaultConnection")
{
    Database.SetInitializer<SecurityContext>(null);
}
 

Затем вы можете просто взять схему, созданную EF к настоящему времени, и управлять ею самостоятельно (вы можете удалить таблицу истории миграций). Я рекомендую использовать проект базы данных SQL Server, чтобы вы могли управлять исходным кодом своей схемы. Теперь вам нужно обновить DbContext при изменении схемы.

Ответ №2:

Вы также можете отключить его через конфигурацию

 <?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>    
    <add key="DatabaseInitializerForType YourNameSpace.SecurityContext, YourLibraryName" value="Disabled" />
    </appSettings>
</configuration>