Опрос таблицы «многие ко многим» в структуре сущностей - PullRequest
1 голос
/ 22 ноября 2010

Скажем, у меня есть две таблицы в Entity Framework, Библиотека и Книга.Они соединяются многими со многими с другой промежуточной таблицей, называемой Library_Book, но она скрыта, поскольку является таблицей соединений.

Как проверить с помощью LINQ, есть ли у библиотеки определенная книга, путем опроса таблицы соединений (у которой нет собственного класса в Entity Framework), не возвращая список всех книг в библиотеке из объединениятаблица, но вместо этого только запись, которая имеет bookId и LibraryId.

Заранее большое спасибо.

1 Ответ

1 голос
/ 22 ноября 2010

Чтобы определить, есть ли в известной библиотеке известная книга, вы можете сделать что-то вроде этого:

bool hasIt = (from l in Libraries from b in l.Books where b.Id == 5 where l.Id == 3 
select l).Any();

Этот запрос Linq не коснется ни таблицы библиотеки, ни книги.Это будет выглядеть так:

    SELECT 
CASE WHEN ( EXISTS (SELECT 
    1 AS [C1]
    FROM [dbo].[LibraryBookIntersection] AS [Extent1]
    WHERE (5 = [Extent1].[BookId]) AND (3 = [Extent1].[LibraryId])
)) THEN cast(1 as bit) WHEN ( NOT EXISTS (SELECT 
    1 AS [C1]
    FROM [dbo].[LibraryBookIntersection] AS [Extent2]
    WHERE (5 = [Extent2].[BookId]) AND (3 = [Extent2].[LibraryId])
)) THEN cast(0 as bit) END AS [C1]
FROM  ( SELECT 1 AS X ) AS [SingleRowTable1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...