提问人:Thierry Verhaegen 提问时间:2/8/2023 最后编辑:chux - Reinstate MonicaThierry Verhaegen 更新时间:2/9/2023 访问量:36
代码发送双精度值,EF 以错误的方式使用它创建查询
Code sending double value, EF creating query with it the wrong way
问:
我正在填充一个有双精度的对象。在数据库中,此字段是浮点数。我的 EF savechanges 失败,因为它说它返回 0 条记录。
我使用 sql profiler 查看它向数据库发送了哪个查询,但此查询确实失败了,从而导致它返回 0 条记录。
所以 EF 是对的,但它将我的浮点数发送到查询中,导致查询崩溃。有人知道它为什么要这样做吗?我怎样才能避免它?
这是我的代码对象:
public partial class Rate : IRate
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Column(Order = 0)]
public int Id { get; set; }
[StringLength(3)]
public string source_currency { get; set; }
[StringLength(3)]
public string target_currency { get; set; }
public DateTime? date_l { get; set; }
public double? rate_exchange { get; set; }
[Key]
[Column(Order = 1)]
public DateTime CreatedOn { get; set; }
}
我将双精度值放入 c# 中的 rate_Exchange 字段中,效果很好。使用调试器检查元素时,它具有正确的双精度值。
但是,EF 将其发送到格式如下的数据库:
exec sp_executesql N'INSERT [dbo].[Rates]([CreatedOn], [source_currency], [target_currency], [date_l], [rate_exchange])
VALUES (@0, @1, @2, @3, @4)
SELECT [Id]
FROM [dbo].[Rates]
WHERE @@ROWCOUNT > 0 AND [Id] = scope_identity() AND [CreatedOn] = @0',N'@0 datetime2(7),@1 varchar(3),@2 varchar(3),@3 datetime2(7),@4 float',@0='2023-02-08 15:58:58.0231618',@1='RUB',@2='EUR',@3='2023-02-01 00:00:00',@4=0,0132374518222941
显然,这失败了,因为它使用了 ,而不是 .对于第 4 个参数
有人有什么线索吗?
答: 暂无答案
评论