c# - 对于 EF 上下文,实例变量和局部变量哪个更好?

标签 c# entity-framework idisposable using-statement

我知道标题看起来有点糟糕:)但我不知道如何解释我的问题..

这对我来说通常是一个基本问题,但我不知道答案..

我正在编写一个服务器应用程序,它使用 eneter 库进行客户端-服务器通信,并且它还有一个 DAL 从数据库获取数据。由于它是一个服务器应用程序,它总是需要与数据库通信,所以我不知道哪种方式更有效。 (大约最多 50 个客户端将连接到服务器)

我正在使用 Entity Framework 并从我的 mysql 数据库创建了一个模型。

第一个代码在这里

    private MyEntities ent;

    public DbHelper()
    {
     ent = new MyEntities();
    }

   void Foo()
  { 
       ent.Mytable.where......
       ....

  }

第二种类型代码是

    void Foo()
    {
        using (MyEntities ent = new MyEntities())
        {
            ent.Mytable.where...
        }

    }

我可以使用 using 语句或为 dal 类创建一个 global 实例变量并将其用于每个函数吗?

最佳答案

更好的是,在 DAL 类上实现 IDisposable:

public sealed class MyDal implements IDisposable
{
    private MyEntities ent = new MyEntities();

    void Foo()
    { 
       ent.Mytable.where......
       ....

    }

    public void Dispose()
    {
        ent.Dispose();
    }
}

然后...

using(var dal = new MyDal())
{
    dal.Foo();
    //....
}

读一读here关于为什么我的 IDisposable 被密封。

关于c# - 对于 EF 上下文,实例变量和局部变量哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16882778/

相关文章:

c# - 如何从具有不同签名的过程构造一个类

c# - 如何将对象包装在动态对象中?

c# - 使用 Entity Framework 获取

entity-framework - 仅当 EntityCollection 或 EntityReference 不包含对象时才能调用 Load

c# - "using"语句中的灾难性故障,即 using(var a= new stream()) 和 a.Something() 抛出异常

sharepoint - 使用已处理的 SPSite 和 SPWeb 对象

c# - 无法访问代码隐藏中的 ASP.NET ChangePassword 控件

c# - 检测在 C# 中使用 openas_rundll 打开的选定程序

c# - 带有poco生成的 Entity Framework IQueryable

c# - 已处置的任务会发生什么?