#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>