我有一个Premiums表,正在尝试使用以下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查询结果中第一行的重复。为什么会出现这种情况呢?
select * from [dbo].[Premium Table] where [Policy Number] = '07748106'
返回两行。这两行由该查询和存储过程返回,彼此不同。不同的保费值、不同的保费类型等等... 然而,似乎 LINQ-to-SQL 认识到有两个结果,但是将两个结果实体都填充了来自第一个返回行的数据。 - StarrPolicy_Number
,而已经说明它是非唯一的。 - Clockwork-Muse