linq数据上下文抽象

时间:2011-01-21 21:32:30

标签: linq entity-framework

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

using ( MyDataModel thisDataContext = new MyDataModel() )
{
  linq query
}

有没有更好的方法来声明数据上下文?

感谢。

2 个答案:

答案 0 :(得分:1)

您可以创建代表DataService例如:

DataContext课程
 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
        }
}

答案 1 :(得分:0)

我们实际上将我们的数据上下文对象作为Thread Static对象放在当前线程上。这样做会消除我们必须将上下文对象传递给需要它的每个方法。

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

即使使用这种方法,我们的上下文对象也不会存在很长时间(这是一件好事)。