Какой прикладной уровень должен располагать DataContext (Silverlight WCF RIA) - PullRequest
0 голосов
/ 26 сентября 2011

Мое приложение Silverlight имеет дизайн с 3 слоями на стороне сервера

  1. Интерфейсный уровень - этот слой содержит только интерфейс, который соединяет клиент Silverlight и службу RIA. В этом слое я посылаю ObjectContext (DataContext, созданный из DAL), который автоматически создается в этом слое и отправляет его в бизнес-логику
  2. Уровень бизнес-логики - у всех классов в этом уровне есть конструктор перегрузки, который представляет собой DataContext, который отправляется с уровня интерфейса. На этом уровне выполняется вся логика, например, фильтрация результатов, проверка данных и т. Д.
  3. Уровень доступа к данным - Pure Entity Framework.

Текущая реализация Business Layer - это интерфейс IDisposable, реализующий все классы, который вызывает внутри него метод Dispose для DataContext, как показано ниже.

MyServerInterfaceLayer.cs

using (var myBusinesessLogicLayer = new MyBLL(this.DataContext1, this.DataContext2))
{
    myBusinesessLogicLayer.DoSomething();
}

MyBLL.cs

public void DoSomething()
{
    // ..
}

public void Dispose()
{
    // dispose all datacontext inside Dispose method of BLL
    this._dataContext1.Dispose();
    this._dataContext2.Dispose();
}

В настоящее время у меня проблема, когда у меня есть 2 класса в Business Layer, MyBLL1 и MyBLL2. MyBLL1 необходимо вызвать некоторый метод в MyBLL2, теперь я отправляю DataContext из MyBLL1 в MyBLL2 после того, как он выходит за рамки MyBLL2, который он будет располагать. Поэтому я хочу знать, какой слой я должен назвать DataContext.Dispose?

...