在我的DAL中,我目前正在基类中使用它:
protected static MyCMSEntities MyCMSDb
{
get { return new MyCMSEntities(ConfigurationManager.ConnectionStrings["MyCMSEntities"].ConnectionString); }
}
并从子类中调用如下:
public static bool Add(ContentFAQ newContent)
{
MyCMSEntities db = MyCMSDb;
newContent.DateModified = DateTime.Now;
newContent.OwnerUserId = LoginManager.CurrentUser.Id;
db.ContentFAQ.AddObject(newContent);
return db.SaveChanges() > 0;
}
我理解获取上下文的方法是静态的,但是当它创建上下文的新内容时,这不是静态的,即每次调用Add方法都是新的。
我是否正确,更重要的是,对于网络应用程序是否正确?
感谢。
答案 0 :(得分:3)
您在为每个网络电话使用新的上下文时都是正确的 - 但为什么会这样混淆?我建议使用静态属性删除此间接(使代码更难理解)并使用using
块,因为上下文是一次性的:
public static bool Add(ContentFAQ newContent)
{
using(var db = new MyCMSEntities())
{
newContent.DateModified = DateTime.Now;
newContent.OwnerUserId = LoginManager.CurrentUser.Id;
db.ContentFAQ.AddObject(newContent);
return db.SaveChanges() > 0;
}
}
此外,上下文的默认构造函数应使用默认连接字符串,如果您未在配置中更改它,则该字符串是正确的连接字符串(否则只需将其重新添加)。