Основываясь на данном ответе на мой вопрос на Entity Framework in layered architecture, теперь я хотел бы переместить мои хранилища (которые теперь отвечают только за абстракцию CRUD, а не за бизнес-логику) до DAL и резерв BLL для бизнес-логики.
Я пришел к выводу, что контекст сущности следует считать единицей работы и, следовательно, не использоваться повторно. Поэтому я хотел бы создать obejctcontext для HttpContext в своих репозиториях, чтобы предотвратить проблемы с производительностью/потоком [un]. Я хотел бы определить ObjectContext в репозитории следующим образом:Доступ к HttpContext.Current в слое доступа к данным
public MyDBEntities ctx
{
get
{
string ocKey = "ctx_" + HttpContext.Current.GetHashCode().ToString("x");
if (!HttpContext.Current.Items.Contains(ocKey))
HttpContext.Current.Items.Add(ocKey, new MyDBEntities());
return HttpContext.Current.Items[ocKey] as MyDBEntities ;
}
}
В этом случае проект DAL должен знать о переменной HttpContext.Current. Я не уверен, что это хорошая практика и хотелось бы узнать ваше мнение.
Да ладно, кто-нибудь? – Kamyar