На самом деле то, что вы передаете для подсчета, выглядит как эта функция:
bool anonymous_delagate#123(T entity)
{
return entity.IsMatch(a,b,c,d)
}
Но для этого EF необходимо знать, что на самом деле означает метод IsMatch
, который вызывается для этой сущности.
Единственное, о чем я могу подумать сейчас, - это использовать какое-то динамическое подделывание выражений для динамического создания этого запроса.Или переделайте свой дизайн в другое.
На самом деле, существует более простой и нормальный метод, для выполнения которого требуется несколько шагов.
- Сделайте метод
IsMatch
статическим. - Возврат
Expression<{your entity here}, bool>
непосредственно из IsMatch
. - Передать как:
({your entity here}.IsMatch({parameters}))
Остальные могут остаться такими же, как сейчас.
Редактировать: Пример Это будет работать с конкретной сущностью, поэтому я предполагаю, что ваша сущность Order .Замените свою собственную сущность.
public static Expression<Func<Order, bool>> IsMatch(int id, ...) // static method, that returns filtering expression
{
return i => i.Id == id; // create the filtering criteria
}
Затем назовите ее так:
count(some_guid, Order.IsMatch(entityId, inviterId, routeId, luggageTypeId));