该应用程序使用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));