Мое приложение Silverlight имеет дизайн с 3 слоями на стороне сервера
- Интерфейсный уровень - этот слой содержит только интерфейс, который соединяет клиент Silverlight и службу RIA. В этом слое я посылаю ObjectContext (DataContext, созданный из DAL), который автоматически создается в этом слое и отправляет его в бизнес-логику
- Уровень бизнес-логики - у всех классов в этом уровне есть конструктор перегрузки, который представляет собой DataContext, который отправляется с уровня интерфейса. На этом уровне выполняется вся логика, например, фильтрация результатов, проверка данных и т. Д.
- Уровень доступа к данным - 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?