0

dbContext作成されるオブジェクトの量を制御する必要がありますか?

customDbContextシングルトンパターンをクラスに適用する方が安全かもしれないと思いました。ただし、Update-Databaseパッケージマネージャーコンソールでコマンドを実行するdbContextと、デフォルトのコンストラクターがないというエラーが表示されます(シングルトンパターンを実装しているため)。

質問:それは本当にはるかに安全ですか、それとも単純な解決策を選ぶべきですか?

public class WebshopContext : DbContext
{
    private static WebshopContext database;

    private WebshopContext() : base("DefaultConnection") { }

    public static WebshopContext GetInstance() {
        if (database != null)
        {
            return database;
        }
        else {
            database = new WebshopContext();
            return database;
        }
    }
}
4

1 に答える 1

2

DbContext作業単位に対応します。シングルトンはすべてのリクエストで共有されるため、作成しないでください。互換性を保つには、単一の作業単位(コントローラーのメソッドである可能性があります)内の異なるデータベース要求が同じエンティティを共有する必要があるため、データベース要求ごとに新しいDbContextを作成しないでください。

DbContextコントローラのコマンドごとに1つ作成し、それを渡します。リクエストが完了したら、更新リクエストの場合は変更を送信します。

DbContextを常に渡したくない場合は、の「スコープ」を作成できますDbContext

于 2012-10-17T09:24:09.883 に答える