我的Code First数据库在哪里?

时间:2012-04-22 07:46:45

标签: entity-framework-4 ef-code-first

我有一个代码,第一个DbContext应该是创建一个新数据库,但经过多次尝试,数据库不存在,我在代码中ctx.Statuses.ToList()得到一个Sequence不包含任何元素错误下面:

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>());
}

当我收到错误并在立即窗口中检查我的连接字符串时,它是按配置和预期的:

  

?ctx.Database.Connection {System.Data.SqlClient.SqlConnection}   ..       ConnectionTimeout:15       数据库:“EtbCodeFirst”       DataSource:“BRADY-PC”       ServerVersion:'ctx.Database.Connection.ServerVersion'引发了类型'System.InvalidOperationException'的异常       州:已关闭

数据源BRADY-PC上不存在此类数据库,因此在尝试查询数据库之前我应该​​收到连接错误。我很困惑,真的希望有人可以在我今天回到DB第一次开发之前提供帮助。

我还检查过我的(localdb)但仍然没有数据库。甚至没有其他地方甚至是流氓EF代码来创建一个该死的DB。

1 个答案:

答案 0 :(得分:0)

在打开上下文之前调用.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();
    }
}