2

新しいDBを作成するはずの最初のコードDbContextがありますが、何度か試行した後、DBが存在せず、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 データベース: "EtbCodeFirst" DataSource: "BRADY-PC" ServerVersion: 'ctx.Database.Connection.ServerVersion' がタイプ 'System の例外をスローしました.InvalidOperationException' 状態: クローズ

そのような DB はデータ ソースの BRADY-PC に存在しないため、DB にクエリを実行する前に接続エラーが発生するはずです。私は混乱しているのと同じくらい怒っており、今日DBの最初の開発に戻る前に誰かが助けてくれることを本当に願っています.

(localdb)もチェックしましたが、DBはまだありません。悪質な EF コードでさえ、いまいましい DB を作成する場所は他にありません。

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 に答える