Трудно (невозможно) сказать, какой подход лучше, так как мы не знаем, какой именно дизайн вы выбрали. С точки зрения простого приложения может показаться, что два примера эквивалентны (более или менее), но они действительно ведут себя совершенно по-разному.
Фундаментальный вопрос здесь: должно ли время жизни db
быть сравнимым со временем жизни включающего его RequestService
экземпляра?
Если да, то первый пример кода - это способ сделать что-то. Ресурсы будут управляться, как и ожидалось (db
утилизирует свои ресурсы в то же время, когда объект RequestService
должен утилизировать свои ресурсы), и время жизни этих двух будет в значительной степени идентичным (db
создается в Конструктор RequestService
и db
становятся доступными для сбора, как только объект RequestService
становится доступным для сбора).
Однако, если ответ «нет», то второй пример - это (почти) способ сделать что-то - так как вы генерируете представление коллекции RequestStatus
объекта из db
, у вас действительно нет причин держи вокруг себя db
больше. Однако, чтобы сделать это немного лучше, могу ли я предложить ограничить область действия db
с помощью метода ddlFill
:
public List<RequestStatus> ddlFill()
{
using (var db = new requestDBEntities())
return (from rs in db.reqStatus select rs).ToList();
}
Нет необходимости в постороннем члене класса, когда достаточно стекового значения.