Я пишу сайт ASP.NET MVC, где я использую LINQ to SQL для доступа к моей базе данных SQL Server.В моей базе данных есть следующие таблицы:
Сообщений :
- PostID - int, PK, идентификатор
- Текст - nvarchar (MAX)
- PublishDate - дата и время
- и т. Д.
PostTags :
- PostTagID - int, PK, удостоверение личности
- PostID - FK для PK в таблице сообщений
- TagID - FK для PK в таблице тегов
Теги :
- TagID - int, PK, личность
- TagName - varchar (100)
В каждом сообщении должен быть хотя бы 1 тег, поэтому это отношение от одного ко многим .
Я пытаюсь создать функцию поиска по тегам.Я хочу принять тег в качестве параметра и вернуть первые 25 сообщений с этим тегом , упорядоченные по убыванию PublishDate.Вот мой текущий код LINQ to SQL:
var query = (from post in db.Posts
join posttag in db.PostTags
on post.PostID equals posttag.PostID
where posttag.Tag.TagName==tag
select post).OrderByDescending(p=>p.DateOfPublish).Take(25);
Однако я считаю, что мой код неверен, потому что он, похоже, не учитывает отношение «один ко многим» между сообщениями и тегами.
Как я могу улучшить свой код?Заранее спасибо!