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并传递它,当请求完成时,如果它是更新请求,则提交更改。

如果你不想一直传递你的 DbContext,你可以你的DbContext.

于 2012-10-17T09:24:09.883 回答