该应用程序使用EF 6.1.2连接到数据库。应用程序使用EF迁移功能自动升级数据库。

但是,迁移确实会调用无参数构造函数,而不是使用触发迁移的客户端上下文使用的连接字符串。如何强制迁移(在var z = await y.ToListAsync();行上触发)使用提供给clientContext的连接字符串?

客户端上下文的连接字符串由用户提供(即,在app.config中或在任何其他名称下均不可用)。

代码

Database.SetInitializer(new MigrateDatabaseToLatestVersion<ClientContext, Configuration>());

var clientContext = new ClientContext(connectionString);

var y = clientContext.Set<TEntity>();
var z = await y.ToListAsync();


配置类

public sealed class Configuration : DbMigrationsConfiguration<ClientContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = false;
    }
}


ClientContext类

public class ClientContext : DbContext
{

    public ClientContext()
        : this(Properties.Settings.Default.OnlineConnectionString)
    {
    }

    public ClientContext(string connectionString) : base(connectionString)
    {
    }
}

最佳答案

将true传递给构造函数(将true传递给构造函数表示迁移应重用触发迁移的客户端上下文)。无需手动将连接字符串提供给初始化程序。

Database.SetInitializer(new MigrateDatabaseToLatestVersion<ClientContext, Configuration>(true));

10-08 00:03