簡體   English   中英

為什么此Linq查詢從同一SQL視圖返回3個相同的行?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM