使用Visual Studio查询生成器过滤数据

时间:2014-06-18 08:08:24

标签: c# asp.net sql visual-studio-2012

目前我在MS SQL Server(postings表和user表)中创建了两个表,输出到visual studio 2012到网格视图和详细信息视图。我试图找到一种方法来确保当详细信息视图被分页到某个用户(只有两个用户)时,那个用户过去发布的唯一帖子将显示在gridview中。

postings表有ID(主键),它分为两部分,第一部分是该海报的唯一标识符,第二部分是该POST的唯一标识符。 Poster1的ID为45678987654_98765456789,45678987654_234565432123,45678987654_999999999等,海报2的ID为98765678987_987654866,98765678987_2828288282,98765678987_1111111111,共有700个条目。

在用户表中,还有一个唯一的ID,对于该海报也是如此。 Poster1的ID为45678987654_98765456789,Poster2的编号为98765678987_987654866。我试图在visual studio中使用=和%CONTAINS过滤查询构建器,因为理论上如果分析和比较POST和USER的ID的第一个数字,那么可以实现规范。由于详细信息视图中的当前ID可以与所有gridview ID进行比较,因此只有那些相似并且共享前15个左右数字的ID才会被接受到详细信息视图中。

但是,我尝试在使用Post_Id = table_Id或类似/包含格式的查询构建器中执行此操作的所有方法都不起作用。如果还有另一种方法可以做到这一点,或者如果对当前方法略有修改,那么听到这个很好。

1 个答案:

答案 0 :(得分:0)

您需要做的第一件事就是更改过帐表格。如果您将两个值连接起来制作PK,请将其拆分为两列,第一列包含userId,第二列是您生成的帖子的唯一ID。

完成后,将PK设置为两者的组合,并告诉db,发布中的userId是引用用户表PK的FK。

一旦完成,数据将采用VS可能更好理解的格式,db设计肯定会得到改进。

修改

用于创建FK的SQL代码:

ALTER TABLE postings  WITH CHECK ADD  CONSTRAINT [FK_postings_user] FOREIGN KEY([userId])
REFERENCES user ([userId])
GO

ALTER TABLE postings CHECK CONSTRAINT [FK_postings_user]
GO

如果posts.UserId中的值在user.UserId中没有匹配值,那么这将失败。要检查,请执行以下操作:

选择* 来自贴子p 左外连接用户u在u.UserId = p.UserId上 其中u.UserId为空

这将给出一个没有匹配用户行的发布行列表 - 您的数据转换可能有问题?或者有孤儿'数据已经存在。