Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我没有创建的表';不要问,我在EF6中的初始化策略有什么问题吗?_C#_Sql Server_Entity Framework 6 - Fatal编程技术网

C# 我没有创建的表';不要问,我在EF6中的初始化策略有什么问题吗?

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

我正在实体框架6.2.0中使用代码优先建模。我的部分要求是对数据库管理的所有方面进行全面控制,包括创建、迁移/更新和删除

为此,我实现了一个自定义初始值设定项,如下所示:

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
    中新创建的表中看到了这种更改
  • 我在迁移开始时放置了一个异常,表创建停止。然而,我能看到抛出异常的证据的唯一方法是使用Sysinternals的DebugView应用程序。Visual Studio 2017从未记录过一点证据表明它确实发生过

  • 不幸的是,我的新知识只会加深谜团。我仍然不知道为什么会发生这种情况。

    在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) { }