我有我嘗試使用來查詢保費表下面的LINQ到SQL:LINQ to SQL查詢返回重複
var premiums = sourcePolicyContext.Premiums.Where(prm => prm.Policy_Number == "07748106");
這違背了數據庫的SQL語句:
exec sp_executesql N'SELECT [t0].[Policy Number] AS [Policy_Number], ' +
'[t0].[PremiiumType] AS [Premiium_Type], [t0].[Number], ' +
'[t0].[Effective Date] AS [Effective_Date], ' +
'[t0].[Entry Date] AS [Entry_Date], ' +
'[t0].[Collision Premium] AS [Collision_Premium], ' +
'[t0].[Non Collision Premium] AS [Non_Collision_Premium], ' +
'[t0].[Tow Premium] AS [Tow_Premium], ' +
'[t0].[Other Coverage1 Premium] AS [Other_Coverage1_Premium] ' +
'FROM [dbo].[Premium Table] AS [t0]' +
'WHERE [t0].[Policy Number] = @p0',
N'@p0 nvarchar(4000)',
@p0=N'07748106'
按預期方式直接運行時,此查詢返回兩行。它也會導致兩個LINQ to SQL實體,但是這兩個實體中的數據只是SQL查詢結果中第一行的重複數據。爲什麼會發生這種情況?
使用'premiums'的代碼是什麼樣的? – dlev
代碼只是一條測試線。我已經突出了它,並通過擴展結果來強制對查詢進行評估。我正在測試它,因爲系統中的其他地方的代碼將父表格迭代到Premium表中,並對該父表中的每個Premium進行迭代,然後使用高級值執行計算。由於這種行爲,計算產生了無效的結果。 – Starr
爲什麼直接運行時查詢會返回兩行? –