是否有必要控制正在创建的dbContext
个对象的数量?
我认为将Singleton模式应用于我的customDbContext
类可能更安全。但是,当我在程序包管理器控制台中执行Update-Database
命令时,出现错误,我的dbContext
没有默认构造函数(由于我实现了Singleton模式)。
问题:它真的更安全吗?还是我应该选择简单的解决方案?
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;
}
}
}
答案 0 :(得分:2)
DbContext
对应于一个工作单元。您不应该创建一个单例,因为它将在您的所有请求中共享。您不应为每个数据库请求创建新的DbContext,因为单个工作单元中的不同数据库请求(可能是控制器中的方法)应该共享相同的实体以便兼容。
为控制器中的每个命令创建一个DbContext
并传递它,当请求完成时,如果是更新请求,则提交更改。
如果您不想随时传递DbContext,可以为DbContext
创建"scope"。