Поиск в базе данных с использованием коллекции объектов - PullRequest
0 голосов
/ 22 октября 2009

Я уверен, что это просто, но я очень новичок в запросах сущностей, и, возможно, меня об этом спрашивали раньше.

Что мне нужно для поиска всех бизнесов в моей базе данных, где у них есть категория, которая существует в наборе категорий, которые я создал

IList<businessCategory> busCatList;

busCatList.Add(businessCategory.CreatebusinessCategory(1,"Tourism"));
busCatList.Add(businessCategory.CreatebusinessCategory(2,"Accomidation"));
busCatList.Add(businessCategory.CreatebusinessCategory(3,"Entertainment"));
busCatList.Add(businessCategory.CreatebusinessCategory(4,"Bar"));
busCatList.Add(businessCategory.CreatebusinessCategory(5,"Club"));

var items = Data.DBEntities.business.Where(b.businessCategory.Contains(busCatList) );

Я знаю, что синтаксис запроса неверен, но, по сути, запрос, который он выполняет, вытаскивает всю деятельность, где есть категория, соответствующая любой из категорий в busCatLsit

В моей базе данных один бизнес может быть связан со многими категориями

В SQL я бы сделал

SELECT name  FROM business
join businessCategoryRlnshp on businessCategoryRlnshp.businessID = business.ID
where categoryID in (1,2,3)

Ответы [ 2 ]

0 голосов
/ 24 октября 2009

Я не могу себе представить хорошее решение в linq - я имею в виду не просто выполнение какого-либо запроса несколько раз - по одному для каждой бизнес-категории.

Однако в SQL Server 2008 появилась новая функция - передача табличной переменной в хранимую процедуру. Это можно сделать из кода, передав DataSet с 1 DataTable в качестве параметра. Конечно, вы можете написать метод расширения для IEnumerable, чтобы преобразовать его в DataSet, аналогичный методам ToList () или ToDictionary (). Хранимая процедура, возвращающая сущности, может быть использована в EntityFramework 1.0, поэтому теоретически это должно заставить щелкнуть пазл.

PS> Существует также решение, использующее E-SQL и, возможно, методы построения запросов.

0 голосов
/ 22 октября 2009

просто пытаюсь прочитать ваши мысли здесь;)

var items = busCatList.Where(businessCategory => b.businessCategory.Contains(businessCategory));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...