linq数据上下文抽象

linq数据上下文抽象,linq,entity-framework,Linq,Entity Framework,我发现自己在为每一个查询写这行: using ( MyDataModel thisDataContext = new MyDataModel() ) { linq query } 有没有更好的方法来声明数据上下文 谢谢。我们实际上将数据上下文对象作为线程静态对象放在当前线程上。这样做可以避免我们必须将上下文对象传递给每个需要它的方法 我们有一个n层架构,当从客户机调用中间层时,我们只需新建一个上下文对象并将其放在线程上。然后,任何需要进行数据库调用的方法都会将上下文对象从线程中拉出来。因此

我发现自己在为每一个查询写这行:

using ( MyDataModel thisDataContext = new MyDataModel() )
{
  linq query
}
有没有更好的方法来声明数据上下文


谢谢。

我们实际上将数据上下文对象作为线程静态对象放在当前线程上。这样做可以避免我们必须将上下文对象传递给每个需要它的方法

我们有一个n层架构,当从客户机调用中间层时,我们只需新建一个上下文对象并将其放在线程上。然后,任何需要进行数据库调用的方法都会将上下文对象从线程中拉出来。因此,在我们的中间层代码中,很少有真正创建上下文对象的地方。事实上,只有一个地方,如果我没记错的话


即使使用这种方法,我们的上下文对象也不会活那么久(这是一件好事)。

您可以创建一个表示您的
DataContext的
DataService
类,例如:

 public  class BaseDataService:IDisposable
    {
       protected MyDataModel thisDataContext = null;
       public BaseDataService(string connection)
       {
           this.thisDataContext = new MyDataModel (connection);
       }


       public void Dispose()
       {
           this.thisDataContext.Connection.Close();
           this.thisDataContext.Dispose();
       }


    }
然后创建满足您需求的方法 e、 g:

public class YourEntityDataService:BaseDataService 
    {

        public YourEntityDataService(string connection):base(connection)
        {

        }

        public YourEntity GetYourEntity()
        {
//LINQ CODE
        }

        public void SaveYourEntity (YourEntity entityToSave)
        {
//LINQ CODE
        }
}