Есть ли DataServiceContext.Set(тип), эквивалентный DbContext.Set(тип)

Недавно я создал довольно надежный API, основанный на DbContext Entity Framework. Я использую много метаданных и пользуюсь тем фактом, что я могу получить свои данные с помощью вызова типа DbContext.Set(typeof(Customer)). Только в моем API я не знаю во время компиляции, какой тип я буду передавать методу Set. Это очень хорошо работает с EntityFramework, и я хотел бы добавить еще одну абстракцию слоя и сделать так, чтобы она работала как с EntityFramework, так и с DataServiceContext. Итак, у меня действительно есть два вопроса.

Во-первых, а более конкретно, существует ли DataServiceContext (т.е. odata/wcf), эквивалентный методу DbContext.Set (type)?

Во-вторых, и вообще, есть ли хороший ресурс, который сравнивает API, предоставляемые DbContext, с DataServiceContext?

2 ответа

API клиента EntityFramework и DataServices не следует смешивать. Хотя они похожи, они не похожи. DbSet представляет набор сущностей. Я не думаю, что существует сильный контракт вокруг наборов сущностей в DataServiceContext. Вместо этого имя набора сущностей передается методам, которые должны это знать (например, посмотреть на DataServiceContext.AddObject() или же DataServiceContext.CreateQuery() методы) в виде строк. В некотором смысле это значительно облегчает динамическое программирование DataServiceContext. С другой стороны, вам все еще нужно знать, что находится на другой стороне канала (т. Е. На сервере). Как было сказано выше, WCF Data Services и EntityFramework - это разные технологии (даже если они могут работать вместе), и их API, хотя и схожи, служат разным целям. Поэтому сравнивать их - все равно что сравнивать яблоки с апельсинами.

API-интерфейс DbContext на стороне клиента отличается от DbContext на стороне сервера. Основная цель - раскрыть данные и модель, что можно сделать довольно хорошо. Я думаю, что вы, возможно, излишне улучшаете свое приложение, поскольку службы данных WCF могут обеспечить достаточную функциональность.

Вот ссылка Ладислава Мрнки, который очень хорошо разбирается в фреймворке сущностей, он показывает, как вы можете представить свой надежный API с помощью WCF Data Services.

Реализация службы данных WCF с использованием шаблона репозитория