C# 我没有创建的表';不要问,我在EF6中的初始化策略有什么问题吗?
我正在实体框架6.2.0中使用代码优先建模。我的部分要求是对数据库管理的所有方面进行全面控制,包括创建、迁移/更新和删除 为此,我实现了一个自定义初始值设定项,如下所示:C# 我没有创建的表';不要问,我在EF6中的初始化策略有什么问题吗?,c#,sql-server,entity-framework-6,C#,Sql Server,Entity Framework 6,我正在实体框架6.2.0中使用代码优先建模。我的部分要求是对数据库管理的所有方面进行全面控制,包括创建、迁移/更新和删除 为此,我实现了一个自定义初始值设定项,如下所示: public class MyDatabaseInitializer : IDatabaseInitializer<MyDataContext> { public void InitializeDatabase(MyDataContext context) { if (context
public class MyDatabaseInitializer : IDatabaseInitializer<MyDataContext>
{
public void InitializeDatabase(MyDataContext context)
{
if (context.Database.Exists())
Seed(context);
}
}
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
System.Data.Entity.Database.SetInitializer(new MyDatabaseInitializer());
}
}
另一次更新:
我已经证明了两件事:
master
中新创建的表中看到了这种更改不幸的是,我的新知识只会加深谜团。我仍然不知道为什么会发生这种情况。在MyDataContext的构造函数中放置一个断点。是否有一个web.config或app.config,其中有数据库连接?代码优先,DotNet 4.5.2,WPF。连接字符串是按需创建的,而不是在配置中。@DavidBrowne Microsoft我在上下文的构造函数中放置了一个断点,当它被击中时,我检查了
master
db。表已经存在。请尝试添加context.Database.Initialize(true)代码>强制初始化。另外,检查连接字符串以寻找线索context.Database.connection.ConnectionString
using (var context = new MyDataContext(new DbFactory().GetConnectionString())
{
}
public String GetConnectionString(String serverName, String databaseName)
{
var csb = new SqlConnectionStringBuilder();
csb.DataSource = serverName;
csb.InitialCatalog = databaseName;
csb.ConnectTimeout = DatabaseTimeout;
csb.PersistSecurityInfo = false;
csb.IntegratedSecurity = true;
csb.LoadBalanceTimeout = 0;
csb.Pooling = true;
csb.MaxPoolSize = 200;
csb.MinPoolSize = 0;
csb.UserInstance = false;
csb.WorkstationID = AllMaxNetwork.MachineName;
return csb.ConnectionString;
}
public MyDataContext(String connectionString)
: base(connectionString) { }