2

我有一个代码第一个 DbContext 应该是创建一个新的数据库,但是经过几次尝试,数据库不存在,并且我在ctx.Statuses.ToList()下面的代码中得到一个 Sequence contains no elements 错误:

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 Database: "EtbCodeFirst" DataSource: "BRADY-PC" ServerVersion: 'ctx.Database.Connection.ServerVersion' 抛出了一个'System'类型的异常.InvalidOperationException' 状态:已关闭

数据源 BRADY-PC 上不存在这样的数据库,因此在尝试查询数据库之前我应该​​会遇到连接错误。我既生气又困惑,真的希望有人能在我今天回到 DB 第一开发之前提供帮助。

我还检查了我的(localdb),但仍然没有数据库。即使是流氓 EF 代码也没有其他地方可以创建该死的数据库。

4

1 回答 1

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();
    }
}
于 2012-12-21T11:20:38.983 回答