我知道标题看起来有点糟糕:)但我不知道如何解释我的问题..
这对我来说通常是一个基本问题,但我不知道答案..
我正在编写一个服务器应用程序,它使用 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/