Entity framework 4 我的代码优先数据库在哪里?

Entity framework 4 我的代码优先数据库在哪里?,entity-framework-4,ef-code-first,Entity Framework 4,Ef Code First,我有一个code first DbContext,它应该创建一个新的DB,但是经过几次尝试,DB不存在,我得到一个序列,在下面的代码中,ctx.Statuses.ToList()上不包含任何元素错误: static void Main(string[] args) { var ctx = new EtbDbContext(); EtbDbContext.Init(); var s = ctx.Statuses.ToList(); var l = ctx.Logi

我有一个code first DbContext,它应该创建一个新的DB,但是经过几次尝试,DB不存在,我得到一个序列,在下面的代码中,
ctx.Statuses.ToList()上不包含任何元素错误:

static void Main(string[] args)
{
    var ctx = new EtbDbContext();
    EtbDbContext.Init();

    var s = ctx.Statuses.ToList();
    var l = ctx.Logins.ToList();
    var u = ctx.Users.ToList();
}
Init()
方法说:

public static void Init()
{
    Database.SetInitializer(new DropCreateDatabaseAlways<EtbDbContext>());
}
publicstaticvoidinit()
{
SetInitializer(新的DropCreateDatabaseAlways());
}
当我收到错误并在即时窗口中检查我的连接字符串时,它与配置和预期的一样:

?ctx.Database.Connection{System.Data.SqlClient.SqlConnection} .. 连接超时:15 数据库:“EtbCodeFirst” 数据来源:“布雷迪-PC” ServerVersion:'ctx.Database.Connection.ServerVersion'引发了类型为'System.InvalidOperationException'的异常 国家:关闭

数据源BRADY-PC上不存在这样的数据库,因此在尝试查询数据库之前,我应该会收到一个连接错误。在我今天回到DB first development之前,我很恼火,也很困惑,真的希望有人能帮我


我还检查了我的(localdb),但仍然没有数据库。即使是流氓EF代码也无法创建该死的DB。

在打开上下文之前调用.Init

static void Main(string[] args)
{
    EtbDbContext.Init();
    using (var ctx = new EtbDbContext())
    {
        var s = ctx.Statuses.ToList();
        var l = ctx.Logins.ToList();
        var u = ctx.Users.ToList();
    }
}

在打开上下文之前调用.Init

static void Main(string[] args)
{
    EtbDbContext.Init();
    using (var ctx = new EtbDbContext())
    {
        var s = ctx.Statuses.ToList();
        var l = ctx.Logins.ToList();
        var u = ctx.Users.ToList();
    }
}

你能移动
EtbDbContext.Init()吗Main
方法中向上编码>以便它是第一行并再次测试?我不确定这是否重要,但在设置初始值设定项之前创建一个上下文实例看起来很奇怪。@Slauma很好。我以前就这样使用过,但也许我从来没有注意到。我会尽快尝试你的建议。正如@Slauma所注意到的,事情的顺序肯定是错误的(在最好的情况下不应该做任何事情)。另外,app.config中的配置是什么-连接字符串(命名)和“defaultConnectionFactory”(如果有)-以及您的目标提供商(以避免错误版本)。您还可以尝试运行新的EtbDbContext(connectionstring)——这通常是有效的,可以帮助您正确操作Main
方法中向上编码>以便它是第一行并再次测试?我不确定这是否重要,但在设置初始值设定项之前创建一个上下文实例看起来很奇怪。@Slauma很好。我以前就这样使用过,但也许我从来没有注意到。我会尽快尝试你的建议。正如@Slauma所注意到的,事情的顺序肯定是错误的(在最好的情况下不应该做任何事情)。另外,app.config中的配置是什么-连接字符串(命名)和“defaultConnectionFactory”(如果有)-以及您的目标提供商(以避免错误版本)。您还可以尝试运行新的EtbDbContext(connectionstring)——这通常是有效的,可以帮助您正确使用它。