我先将C#winform和EF6代码一起使用,并面临一个奇怪的问题。
我已经在我的项目中添加了一个设置文件来存储连接字符串。
因此,当用户首次运行该应用程序时,将打开一个表单来存储连接字符串。然后将该连接字符串传递给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'不能为null,为空或仅包含空格。
请注意,此时已输入连接字符串。并且,如果我现在删除所有表并再次运行应用程序,则会创建带有添加的新字段的表。
任何想法我在这里想念什么?为什么在添加新字段时不自动迁移?
提前谢谢!