我正在开发一个使用Entity Framework 6 for MySql的c#项目。将对象添加到dbContext我使用以下方法:
public void Add(User item)
{
using (var ctx = new DbContext())
{
ctx.Users.Add(item);
ctx.SaveChanges();
}
}
现在我需要知道是否可以使用一个DbContext对象:
private DbContext _ctx = new DbContext();
并将Add方法更改为
public void Add(User item)
{
_ctx.Users.Add(item);
_ctx.SaveChanges();
}
然后使用另一种方法来处理DbContext对象并在应用程序退出时调用它。
这是一个好方法吗?这种方法的缺点和优点是什么?
先谢谢。
答案 0 :(得分:2)
考虑将DbContext
作为班级成员的利弊:
优点:
缺点:
Application
或Session
中)DbContext旨在用于每个数据库请求的 。每MSDN:
DbContext实例表示工作单元和存储库模式的组合,以便它可以用于从数据库查询并将更改组合在一起,然后将其作为一个单元写回
总而言之,这种好处显然不值得花费。
答案 1 :(得分:1)
您不希望在网络应用中执行此操作。为什么?原因有多:
虽然可能看起来多个上下文会影响性能(并使您的编码更加复杂),但在内部处理的事情处理得非常好。
Windows应用程序怎么样?要看。如果应用程序始终连接,则可能在某些情况下有效。当然比旋转更容易。但是,缺点是它会消耗数据方面的资源,无论是否正在进行任何工作。
一般来说,我更喜欢更乐观,断断续续的系统。如果那不是您需要的系统(需要,不需要),那么您可以考虑它。但是,作为一项规则,我不会为应用程序提供单个实例。