Как передать параметры динамического поиска от клиента через RIA Services? - PullRequest
1 голос
/ 11 ноября 2009

У меня есть клиент C # .NET Silverlight 3.0, на котором запущены службы RIA с моделью EF. Я пытаюсь настроить систему расширенного поиска на клиенте так, чтобы пользователь мог сказать, что я хочу, чтобы поле (свойство) "Foo1" имело значение "Bar1" и т. Д.

Я бы хотел использовать гибкий, динамичный подход, подобный этому . Проблема в том, что я не могу передать IQueryable в качестве параметра ServiceOperation или в качестве параметра службы домена. И.Е. Это не работает:

[ServiceOperation()]
public int GetFooCount(string category, IQueryable<Foo> search)
{
    int fooCount;
    if (search != null)
    {
        IQueryable<Foo> filteredFooSet = this.Context.FooSet.Intersect(search);
        fooCount = (from foo in filteredFooSet
                    where foo.Category == category
                    select foo).Count();
    }
    else
    {
        fooCount = (from foo in this.Context.ContactSet
                    where foo.Category == category
                    select foo).Count();
    }

    return fooCount;
}

Может кто-нибудь предложить или способ заставить этот подход работать или альтернативный (лучший) подход? Целью является гибкий контроль поиска, который можно применять к более чем одному конкретному типу объекта.

1 Ответ

1 голос
/ 11 ноября 2009

Я думаю, что вам лучше всего использовать Dynamic Linq Library . Используя эту библиотеку, вы можете передать ваши предложения where в виде строки, а затем использовать библиотеку, чтобы использовать ее в отношении ваших данных EF.

...