在我的服务界面中,我在每个方法中声明DataClasses1DataContext data = new DataClasses1DataContext();
。我可以声明一次并使所有方法都可以访问吗?
答案 0 :(得分:1)
当然。通过使用一个静态属性来控制公开的datacontext的生命周期,您可以将其声明一次但仍然创建一段特定的时间。特别是,每个http请求创建一个上下文(如果您在IIS中托管服务)是一个好主意,比在任何地方创建实例要好得多。
我在几年前写过博客。
http://www.wiktorzychla.com/2010/12/container-based-pseudosingletons-in.html
更先进的方法是使用IoC容器,并在IoC基础架构创建服务时自动创建和注入datacontext。看一下我的另一篇教程
http://www.wiktorzychla.com/2014/02/lifetime-management-of-wcf-services.html
答案 1 :(得分:1)
您可以将其存储为类中的实例变量:
public class SomeClass : IDisposable
{
private readonly DataClasses1DataContext _context;
public SomeClass()
{
_context = new DataClasses1DataContext();
}
public void Dispose();
{
_context.Dispose();
}
public void Method1();
{
// You can use the _context here
}
public void Method2();
{
// You can use the _context here
}
...
}
现在,您可以在类的所有方法中使用context
字段。请记住,DbContext应该是短暂的生活。您应该避免将其存储在某些静态字段中。最好的方法是每个HTTP请求都有一个DbContext。