LINQ Query, который может идентифицировать строку в соединительной таблице с двумя переменными - как это сделать? - PullRequest
0 голосов
/ 15 марта 2011

Я использую c #, linq и EF4.

Мне нужна помощь, чтобы написать запрос LINQ, который может идентифицировать строку в базе данных, используя две переменные для составного первичного ключа.

Вот таблицы в моей базе данных, представленные в моей концептуальной модели:

Таблицы базы данных:

CmsContents
CmsCategories
CmsRelatedCategories (Pure Juction Table)

Тип сущности:

CmsContent
CmsCategory

Набор предметов:

CmsContents
CmsCategories

У меня есть некоторые навигационные свойства:

for CmsContents --> CmsCategories --> Return Collection of Cms CmsCategory
for CmsCategories --> CmsContents --> Return Collection of Cms CmsContents

Представлены данные в базе данных для соединительной таблицы:

CategoryId     ContentId
7              1
7              2
9              2

Мне нужно идентифицировать ОДИН ОБЪЕКТ в таблице чистых соединений, используя две переменные: CategoryId и ContentId:

CategoryId     ContentId
9              2

В данный момент я использую этот код для извлечения одного объекта, но он не работает должным образом.

CmsContent myContentObj = (CmsContent)context.CmsContents.Where(x => x.ContentId == myContentId);

Есть идеи, как ее решить?

1 Ответ

1 голос
/ 15 марта 2011

Используйте это:

CmsContent myContentObj = context.CmsContents.Where(x => x.ContentId == myContentId).FirstOrDefault();

Я предположил, что ContentId - это полный первичный ключ для таблицы CmsContent. Это предположение должно быть верным, потому что иначе ваша таблица сопоставления не будет иметь никакого смысла.

Пояснение:
Ваш запрос не работает , потому что where возвращает IEnumerable<CmsContent>, а не один экземпляр. Вот для чего FirstOrDefault: Возвращает первый найденный элемент или null (точнее default(CmsContent)), если не найдено элементов с указанным идентификатором содержимого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...