У меня есть ситуация, когда я предоставляю метод для запроса данных различными способами.Мы предоставляем пользователю 4 различных критерия соответствия, и они могут смешивать и сопоставлять столько, сколько хотят.
Например:
public Fruit GetFruit(Boolean isLocal, string storeName, string classificationType, string state);
Это просто, когда все атрибуты находятся натаблица, но моя проблема возникает в результате сложности в модели данных.Три из моих атрибутов просты, они просто соединения, но у меня есть одна таблица, которая стоит за отношениями один ко многим.Поэтому, чтобы запросить его, мне нужно присоединиться ко многим.
Итак, допустим, я пытаюсь определить все фрукты, которые предлагает магазин.В магазине есть список фруктов, и наш классификационный тип находится во многих отношениях (FruitClassification)
альтернативный текст http://tinyurl.com/39q6ruj
Единственный успешный способ, которым я смог запросить это в EF, этовыбрав все фрукты (по классификации), а затем выбрав все магазины, которые соответствуют критериям фильтра, и затем присоединив их.
Можно подумать, что этот запрос в ef будет функциональным:
var final = (
from s in Stores
join fc in FruitClassifications.Where(z=>z.Classifications.Code == classificationType && z.Classifications.Type.Code =="FRT").Select(x=>x.Fruit).Distinct()
on s.Fruits.Id equals f.Id
where s.Name=name && s.isLocal && s.State==state
select s
).ToList();
Ноон работает ужасно (и выглядит так же, когда я его профилирую), есть ли способ отправить этот запрос в базу данных?Лучший способ сделать запрос?