Я пишу веб-api, прикрепленный к базе данных, которую я создал с помощью модели First.Отключение миграции
Будучи новым, я вводил в заблуждение модель сначала с первым кодом.
Поскольку это мое первое приложение EF/Web, я не понимал, что миграция еще не была реализована Model First, и я выполнил процедуру ее реализации. Когда он бежал, я получил некоторые ошибки, посмотрел на них и только тогда понял, что мне нужно будет удалить его снова.
Следуя инструкциям, я удалил папку миграции, а также таблицу _migrationHistory из базы данных.
Но теперь я получаю следующее исключение, когда в базе данных отсутствует таблица _migrationhistory.
protected void Application_Start()
{
// Call initializer
Database.SetInitializer(new PulseDbInitializer());
new ApplicationDbContext().Database.Initialize(true); <- error here
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
«Исключение типа„System.NotSupportedException“произошло в EntityFramework.dll, но не был обработан в пользовательском коде Дополнительная информация: Совместимость Модель совместимость модели не могут быть проверены, так как база данных не содержит модели метаданных. может быть проверен только для баз данных, созданных с использованием Code First или First First Code ».
Ниже частичное описание моего инициализаторе
public partial class PulseDbInitializer : DropCreateDatabaseIfModelChanges<ApplicationDbContext>, IPulseDbInit
//public partial class PulseDbInitializer :DropCreateDatabaseAlways<ApplicationDbContext>, IPulseDbInit
{
private ApplicationDbContext _context;
protected override void Seed(ApplicationDbContext context)
{
_context = context;
var pid = new PulseDbInitializionData(context);
pid.Init(this);
}
}// class PulseDbInitializer
кажется, что приложение пытается использовать миграции (потому что это создает _migrationhistory таблицу), хотя я удалил Миграции вложенную папку. Будучи новым, я не уверен, куда идти. Я знаю, что я создал свой инициализатор, см. Выше, так что я чего-то не хватает?
EDIT - Слишком долго для комментария
Im не уверен, что мы понимали друг друга.
Очень просто, я не знаю, что генерирует таблицу _MigrationHistory в моей базе данных как afaik, если я удаляю подкаталог Migration из моего проекта и удаляю базу данных, тогда я подумал, что это все, что мне нужно сделать, чтобы удалить миграции.
В моей модели сначала DropCreateDatabaseIfModelChanges - это то, что я всегда использовал для создания базы данных и работает как ожидалось. Он создает новую базу данных или воссоздается при изменении модели.
Пока я не добавил миграцию, я не заметил эту таблицу _MigrationHistory, и у меня нет подсказки, если команда add-migration добавила какой-либо код в мой проект, который мне нужно удалить или изменить (я действительно ненавижу все происходящее и не сообщается точно, что было сделано в каком-то журнале. Пожалуйста, Microsoftsoft, для дальнейшего использования)
Или я совершенно неправ, и стол _MigrationHistory всегда был там, но я никогда не замечал? Кажется, все работает, пока я не удаляю стол.
В DropCreateDatabaseAlways, что вы закомментированы должны работать. http://stackoverflow.com/questions/29349443/why-model-compatibility-cannot-be-checked –
@SteveGreene да, но это удалит и воссоздает базу данных при каждой инициализации, не так ли? – Jcl
Да, запустите его один раз, затем вернитесь к DropCreateDatabaseIfModelChanges –