将连接字符串作为字符串问题传递给EF上下文构造函数

时间:2019-02-15 09:16:41

标签: c# winforms entity-framework

我先将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,为空或仅包含空格。

请注意,此时已输入连接字符串。并且,如果我现在删除所有表并再次运行应用程序,则会创建带有添加的新字段的表。

任何想法我在这里想念什么?为什么在添加新字段时不自动迁移?

提前谢谢!

0 个答案:

没有答案