我正在写一个ASP.NET MVC网站,我正在使用LINQ to SQL来访问我的SQL Server数据库。在我的数据库,我有以下表格:是否适合在LINQ to SQL中完成此类功能?
帖子:
- 帖子ID - INT,PK,身份
- 文本 - 为nvarchar(MAX)
- PublishDate - 日期时间
- 等
PostTags:
- PostTagID - INT,PK,身份
- 帖子ID - FK来PK,以岗位表
- 标签识别 - FK来PK到标签表
标签:
- 标签识别 - INT,PK,身份
- 标签名 - 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);
不过,我认为我的代码是错误的,因为它似乎不尊重帖子和标签之间的单一对多的关系。
我该如何改进我的代码?提前致谢!
与其简单地说“它不工作”,您应该发布您的预期结果以及实际得到的结果。 – 2010-09-05 22:13:47
@Adam我没有测试代码,但我很确定它不会工作,因为PostTags中可能有多个记录具有相同的PostID。 – 2010-09-05 22:18:40
我的钱在数据上。你能否给我们一些样本记录并显示哪些记录(如果有的话)被退回? – SteveCav 2010-09-05 22:24:19