Динамически использовать ресурс службы данных WCF - PullRequest
0 голосов
/ 17 марта 2011

У меня есть служба данных WCF, которая предоставляет контекст базы данных Entity Framework и EntitySet, например,

public class DatabaseService : DataService<DatabaseContext>
{
    // This method is called only once to initialize service-wide policies.
    public static void InitializeService(DataServiceConfiguration config)
    {

        // TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.
        // Examples:

        config.SetEntitySetAccessRule("People", EntitySetRights.AllRead);

        // config.SetServiceOperationAccessRule("MyServiceOperation", ServiceOperationRights.All);
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
    }
}

Можно ли использовать этот сервис таким образом, чтобы я мог динамически создавать запросы к сервису, используя полный URI?

Т.е.. URI, который я бы использовал,

http://localhost:1353/DatabaseService.svc/People?$filter (мой фильтр здесь)

Я не хочу, чтобы мои запросы были жестко запрограммированы, просто динамически вызывались путем изменения URI на основе строк.

Уверен, что это возможно, но реализация проста или требует много кода, например, полного динамического прокси для службы WCF?

Раньше я делал подобные вещи только с простыми сервисами SOAP.

EDIT

Точнее говоря, я хочу иметь возможность делать что-то подобное,

IEnumerable<People> peopleResults = new DataServiceQuery("http://localhost:1353/DatabaseService.svc/People?$filter (my filter here)")

Где результаты заносятся прямо в мой список, и клиенту ничего не нужно знать, кроме полного URI (включая фильтры и все).

1 Ответ

1 голос
/ 17 марта 2011

Класс DataServiceQuery , когда-то созданный для типа, имеет RequestUri, который можно установить для настройки запроса.Я не знаю, что это каноническое использование, но это, безусловно, будет работать.

...