这对于使用EntityFramework上下文是否可以

时间:2011-04-17 21:14:38

标签: asp.net entity-framework-4 static

在我的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方法都是新的。

我是否正确,更重要的是,对于网络应用程序是否正确?

感谢。

1 个答案:

答案 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;
    }
}

此外,上下文的默认构造函数应使用默认连接字符串,如果您未在配置中更改它,则该字符串是正确的连接字符串(否则只需将其重新添加)。