我在 .NET v4 aspx 页面上有一个实体数据源(连接到 SQL Server 2012 数据库)。我的数据源声明如下所示:
<asp:EntityDataSource ID="BlahBlah" runat="server"
ConnectionString="name=BlahBlah"
DefaultContainerName="BlahBlah" EnableFlattening="False"
EntitySetName="vw_shop_ProductListWithIndivCats"
Where="it.Display =true" OrderBy="it.[DisplayPriority]"
Select="DISTINCT it.[ProductID], it.[Name], it.[Short_rubric], it.[Price], it.[Available], it.[Display], it.[ProductDetailLayoutID], it.[DisplayPriority] " >
WHERE
当用户与站点交互时,该值在代码中被修改。实体的列数多于SELECT
语句中的列数
数据显示在gridview 中并且工作得很好,除了DISTINCT
关键字不被尊重,即表中的重复行显示在gridview 中。
有什么建议么?
问题的更多细节。实体(即视图)中的列vw_shop_ProductListWithIndivCats
是:
ProductID
Name
Short_rubric
Rubric
Price
Postage
Image_small
Image_Large
ImageType
Available
Display
ProductDetailLayoutID
DisplayPriority
CategoryID
Category
大多数字段都是从产品表中派生的。在视图中有一个多对多连接到一个Categories
表,其中最后两个字段通过通常的链接表进行调解。
在用户界面中,用户可以按类别选择产品,并且由于产品可能有多个类别,例如 n 个类别,selct 语句(没有 distinct)产生 x 行,因为视图仅包含字段形式,产品表将包含 n 个重复行. 我期待 DISTINCT 或 GROUP BY 对行进行重复数据删除,但两者都没有。我已经通过临时放入一个显示每一列的列表视图来确认我拥有我认为拥有的列