4

最初にコードを使用してデータベースを作成したいと考えています。そして、私のデータベースは常に「DropCreateDatabaseAlways」モードになっています。

次のようなデータベースに対してクエリを実行しようとしないと、

using (var db = new Models.TnHContext())
        {
            var query = from u in db.Users
                        select u;
            foreach (var u in query)
            {
                txt += u.UserID + "<br/>";
            }
        }

データベースは作成されません。実行しない限り、作成されたデータベースを確認できるのは私だけです。これは EntityFramework の設計/デフォルトの動作によるものでしょうか?

4

2 に答える 2

0

データベースの初期化は、Entity Framework によって遅延してトリガーされます。これは、EF がデータベースに接続しようとしたときにのみ発生します。以下を使用して、データベースの初期化を手動でトリガーできます。

using (var db = new Models.TnHContext())
{
    db.Database.Initialize(force: false);
}

force パラメーターを false に設定すると、初期化が既にトリガーされている場合、初期化を実行しないように EF に指示されます。

于 2013-06-25T18:13:01.707 に答える
0

データベース初期化子は、コンテキストに対してクエリを実行するとき、ObjectContextからを取得するときDbContext、またはメソッドを呼び出すときDatabase.Initializeに呼び出されます。

したがって、クエリを実行せずにすぐにデータベースを作成する場合は、次を使用する必要があります。

context.Database.Initialize(false);
于 2013-06-25T18:13:04.190 に答える