[英]Why is this Linq Query returning 3 identical rows from the same SQL view?
我有一個定義MSSQL 2008的簡單視圖。該視圖定義如下:
SELECT dbo.tblCompany.CompanyID, dbo.tblAccount.Carrier, SUM(ISNULL(dbo.tblLine.LineCharge, 0)) + SUM(ISNULL(dbo.tblLine.FeatureCharge, 0))
+ SUM(ISNULL(dbo.tblLine.AccessCharge, 0)) AS SumOfCharges
FROM dbo.tblCompany LEFT OUTER JOIN
dbo.tblCompany_Location LEFT OUTER JOIN
dbo.tblAccount LEFT OUTER JOIN
dbo.tblLine LEFT OUTER JOIN
dbo.tblBill_Data ON dbo.tblLine.LineID = dbo.tblBill_Data.LineID ON dbo.tblAccount.AccountID = dbo.tblLine.AccountID ON
dbo.tblCompany_Location.LocationID = dbo.tblAccount.LocationID ON dbo.tblCompany.CompanyID = dbo.tblCompany_Location.CompanyID
GROUP BY dbo.tblCompany.CompanyID, dbo.tblAccount.Carrier
它以以下形式返回數據:
1 Carrier1 $70.00
1 Carrier2 $100.00
1 Carrier3 $150.00
3 Carrier2 $60.00
....etc
使用SQL select語句可以很好地工作。
我有一個VB linq查詢,它只是根據CompanyID設置where子句。
Dim expenses = From exp In Me.vw_CarrierExpenses _
Where exp.CompanyID = companyId _
Select exp
Return expenses.ToList()
如果我使用上面的示例數據基於1的CompanyID進行過濾,我將獲得3次第一行:
1 Carrier1 $70.00
1 Carrier1 $70.00
1 Carrier1 $70.00
我一定在這里遺漏了一些非常簡單的東西。 它始終返回正確的行數,但數據始終相同。 謝謝。
我一直忘了LINQ在查詢模型中需要有一個真正唯一的主鍵字段。 我通過添加以下“假”主鍵到視圖中:
ROW_NUMBER() OVER (ORDER BY dbo.tblCompany.CompanyID) As 'CarrierExpenseID'
到我的視圖字段,然后將其添加為我的視圖模型的主鍵。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.