абстракция контекста данных linq - PullRequest
2 голосов
/ 22 января 2011

Я пишу эту строку для каждого запроса:

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

Есть ли лучший способ объявить контекст данных?

Спасибо.

Ответы [ 2 ]

1 голос
/ 22 января 2011

вы можете создать класс 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
        }
}
0 голосов
/ 22 января 2011

Мы фактически помещаем наш объект контекста данных в текущий поток как статический объект потока.Это избавляет нас от необходимости передавать объект контекста каждому нужному методу.

У нас n-уровневая архитектура, и когда наш средний уровень вызывается из клиента, мы просто создаемконтекстный объект и положить его в поток.Затем любой метод, которому необходимо выполнить вызов базы данных, просто извлекает объект контекста из потока.Итак, в нашем коде среднего уровня очень мало мест, где мы на самом деле создаем объект контекста.Фактически, только одно место, если я правильно помню.

Даже с помощью этого метода наши контекстные объекты не живут так долго (что хорошо).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...