【发布时间】:2012-11-13 02:50:18
【问题描述】:
我目前正在使用类似于此的DbContext:
namespace Models
{
public class ContextDB: DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<UserRole> UserRoles { get; set; }
public ContextDB()
{
}
}
}
然后,我在需要访问数据库的 ALL 我的控制器顶部使用以下行。我还在我的 UserRepository 类中使用它,其中包含与用户相关的所有方法(例如获取活动用户、检查他的角色等):
ContextDB _db = new ContextDB();
考虑到这一点,有时一个访问者可以激活多个 DbContext,例如,如果它正在访问使用 UserRepository 的控制器,这可能不是最好的想法。
我应该什么时候创建一个新的 DbContext?或者,我是否应该有一个在所有地方传递和重用的全局上下文?这会导致性能下降吗?也欢迎提出替代方法的建议。
【问题讨论】:
-
在这种情况下,我将使用依赖注入(例如 Ninject),因此它会为每个请求创建一个
DbContext。我还会创建服务层。检查this SO question & answer -
对于非 ASP 案例或尝试使用单例,请参阅 stackoverflow.com/questions/12871666/linq-and-datacontext(建议重复)
标签: c# asp.net-mvc entity-framework asp.net-mvc-4