Я использую C # winform с EF6 codefirst и сталкиваюсь со странной проблемой.
Я добавил файл настроек в свой проект для хранения строк подключения.
, поэтому, когда пользователь запускаетВ приложении впервые открывается форма для хранения строки подключения.и я передаю эту строку подключения конструктору DbContext.Ниже приведен мой код.
public AppStructMahkeme()
: base(MySettings.Default.connectionString)
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<AppStructMahkeme, Configuration>());
Database.SetInitializer(new CreateDatabaseIfNotExists<AppStructMahkeme>());
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
}
также в файле конфигурации включены автоматические миграции
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
Хорошо, вот сценарии;1 - пользователь запускает приложение в первый раз и вводит строку подключения.все работает нормально, таблицы создаются и т. д.
2- после того, как таблицы настроены, и я решил внести некоторые изменения в свои таблицы, скажем, я хочу добавить новое поле.и снова запустите приложение, я получаю сообщение об ошибке, сообщающее, что dbContext изменен, и мне нужно рассмотреть возможность использования codefirst миграций.
, поэтому я знаю, что мне нужно add-migration
, чем update-database
, однако, когдаПри этом я получаю следующую ошибку на консоли диспетчера пакетов
Аргумент 'nameOrConnectionString' не может быть нулевым, пустым или содержать только пробел.
обратите внимание, чтоСтрока подключения уже введена в этот момент.И если я удаляю все таблицы сейчас и снова запускаю приложение, создаются таблицы с добавленным новым полем.
Любые идеи, что мне здесь не хватает?почему он не переносится автоматически при добавлении новых полей?
спасибо заранее!