У меня есть эта схема:
... и я хочу выбрать несколько записей, используя этот запрос:
SELECT
Articles.ArticleId,
Articles.Title,
Articles.Tooltip,
Articles.UriTitle,
Articles.SubTitle,
Articles.Published,
Tags.TagId
FROM Articles INNER JOIN
ArticleTag ON Articles.ArticleId = ArticleTag.ArticleId INNER JOIN
Tags ON ArticleTag.TagId = Tags.TagId
WHERE (Tags.TagId = @tagid) AND (Articles.Published = 1)
Может кто-нибудь помочь мнечтобы преобразовать этот запрос в EF 4.1 Code First (лямбда-выражение), пожалуйста?
ОБНОВЛЕНИЕ:
Я использую @ Ladislav Mrnka (каклямбда-выражение) и код работает!Теперь я поместил сгенерированный sql здесь и проверил, пожалуйста, чтобы убедиться, что нет проблем:
// C#:
var query = context.Articles.Where(a => a.Published && a.Tags.Any(t => t.TagId == tagId))
.Select(a = new {
a.ArticleId,
a.Title,
a.Tooltip,
a.UriTitle,
a.SubTitle,
a.Published
});
и сгенерированный sql
SELECT
[Extent1].[ArticleId] AS [ArticleId],
[Extent1].[Title] AS [Title],
[Extent1].[Tooltip] AS [Tooltip],
[Extent1].[UriTitle] AS [UriTitle],
[Extent1].[SubTitle] AS [SubTitle],
[Extent1].[Description] AS [Description],
[Extent1].[Keywords] AS [Keywords],
[Extent1].[MetaDescription] AS [MetaDescription],
[Extent1].[CreatedAt] AS [CreatedAt],
[Extent1].[UpdatedAt] AS [UpdatedAt],
[Extent1].[Viewed] AS [Viewed],
[Extent1].[Published] AS [Published],
[Extent1].[Body] AS [Body]
FROM [dbo].[Articles] AS [Extent1]
WHERE ([Extent1].[Published] = 1) AND ( EXISTS (SELECT
1 AS [C1]
FROM [dbo].[ArticleTag] AS [Extent2]
WHERE ([Extent1].[ArticleId] = [Extent2].[ArticleId]) AND ([Extent2].[TagId] = @p__linq__0)
))