У меня серьезная (это сводит меня с ума) проблема с LINQ to SQL . Я разрабатываю приложение ASP.NET MVC3 с использованием C # и Razor в Visual Studio 2010.
У меня есть две таблицы базы данных, Продукт и Категории :
Продукт (Prod_Id [первичный ключ], другие атрибуты)
Категории ((Dept_Id, Prod_Id) [ первичные ключи], другие атрибуты)
Очевидно Prod_Id в категориях - это внешний ключ. Оба класса отображаются с помощью Entity Framework (EF). Я не упоминаю контекст приложения для простоты.
В категориях есть несколько строк, содержащих Prod_Id . Я хочу сделать проекцию всех Distinct Prod_Id в Категории. Я сделал это, используя простой (T) SQL в SQL Server MGMT Studio в соответствии с этим (действительно простым) запросом:
SELECT DISTINCT Prod_Id
FROM Categories
, и результат правильный. Теперь мне нужно сделать этот запрос в моем приложении, поэтому я использовал:
var query = _StoreDB.Categories.Select(m => m.Prod_Id).Distinct();
Я иду, чтобы проверить результат моего запроса, используя:
query.Select(m => m.Prod_Id);
или
foreach(var item in query)
{
item.Prod_Id;
//other instructions
}
, и он не работает. Прежде всего, Intellisense, когда я пытаюсь написать query.Select (m => m.
или item.
, показывает только предложения о методах (например, Equals и т. Д.) И не свойства. Я подумал, что, возможно, что-то не так с Intellisense (я думаю, большинство из вас много раз надеялись, что Intellisense ошибается :-D), но когда я запускаю приложение, я получаю сообщение об ошибке во время выполнения.
Прежде чем дать свой ответ имейте в виду, что:
1) Я проверил множество форумов, я пробовал обычный LINQ to SQL (без использования лямбда-выражений), но он не работает. Тот факт, что он работает в (T) SQL, означает, что что-то не так с инструкцией LINQ to SQL (другие запросы в моем приложении работают отлично).
2) По причинам, связанным с приложением, я использовал List < Т>
вместо _StoreDB.Categories, и я подумал, что это проблема. Если вы можете предложить мне решение без использования List
, мы также будем признательны.
Спасибо за ваши ответы
Francesco