Оператор using
приведет к удалению вашего CurrentDataSource
в конце блока using
, а не к удалению DataService
.Поэтому вопрос не в том, является ли DataService
IDisposable
(это не так), а в том, является ли MyEfModel
одноразовым (это так).Как указывает г-н Разочарование, компилятор запретил бы использование оператора using
, если бы это было не так.
Это означает, что блок using
лучше всего использовать при создании нового объекта.Например:
using (MyEfModel context = this.GetNewDataSource()) {...}
Таким образом, вы не столкнетесь с возможностью того, что кто-то попытается получить доступ к CurrentDataSource
после использования блока и обнаружит исключение.
Относительно вашего другого вопроса оIQueryable и тому подобное, я обычно не видел, чтобы методы WCF реализовывали IQueryable<>
, так как они используются по сетевому соединению.Обычно IEnumerable<>
является предпочтительным.И вы не «переводите» свой запрос в список, поскольку это будет означать, что он уже был в списке.Вы оцениваете запрос на создать Список.Тогда вы можете привести этого списка к IEnumerable или IQueryable , поскольку List реализует эти интерфейсы.