【发布时间】:2012-04-25 13:47:58
【问题描述】:
在使用 ASP .Net(MVC Unity 框架)时遇到了一个真正奇怪的问题。我的观点如下(在这个例子中已经简化了):
CREATE VIEW [dbo].[V_eSummary] AS
SELECT a.ID,
a.Domain
FROM [Table1] a
GROUP BY a.ID,
a.Domain
基础表具有重复值,因此分组以获得不同的值。
在 .Net 中,我有以下 LINQ 查询:
var eSummary = from s in ctx.V_eSummary
select s;
而不是看到(如在 SQL 中运行视图时显示的那样):
ID Domain
206080 .hello.com
206080 .this.com
206080 www.hello.com
206080 .www.hello.com
206080 .hello.zettaneer.com
我明白了:
ID Domain
206080 .hello.com
206080 .hello.com
206080 .hello.com
206080 .hello.com
206080 .hello.com
使用 SQL 分析器,似乎正在执行正确的查询。然而,无论出于何种原因,它都会在 .Net 中带来不正确的值。
非常感谢任何建议。
根据要求,这是来自 SQL 分析器的代码。直接在服务器上运行它会产生正确的结果。 :S
SELECT
[Extent1].[ID] AS [ID],
[Extent1].[Domain] AS [Domain]
FROM (SELECT
[V_eSummary].[ID] AS [ID],
[V_eSummary].[Domain] AS [Domain]
FROM [dbo].[V_eSummary] AS [V_eSummary]) AS [Extent1]
【问题讨论】:
-
经典 asp 不是 ASP.NET。
-
您如何查看 eSummary 的内容?通过调试器,或者您是否有代码迭代它?如果是代码,我们可以看到您正在使用的代码吗?无意冒犯,但看起来你的 .NET 代码错误比 Linq 搞砸了这么简单的查询更有可能。
-
请发布视图使用的确切 SQL 代码。
-
我认为 .NET 代码的其余部分会很有用。
-
@AnnL。对于上面发布的示例,我使用的是调试器,但我使用的代码是 for 循环:foreach (var c in eSummary { eModel m = new eModel(); m.ID = c.ID; m.域 = c.Domain; }
标签: asp.net .net sql sql-server linq