我已经为EF6代码第一类添加了一个十进制属性,并为它生成了迁移类。这似乎总是生成一个精度(18,2)十进制的迁移。所以在实际应用迁移之前,我已经将迁移更改为十进制(19,12)而不是这样:
AddColumn("dbo.cv_location", "latitude", c => c.Decimal(precision: 19, scale: 12));
AddColumn("dbo.cv_location", "longitude",c => c.Decimal(precision: 19, scale: 12));
现在,在更新数据库时,添加的列将在数据库中具有正确的精度和比例。但是,EF创建的插入/更新查询没有正确的值。以下是创建的查询的示例:
exec sp_executesql N'UPDATE [dbo].[cv_location]
SET [modify_date] = @0, [latitude] = @1, [longitude] = @2
WHERE (([location_id] = @3) AND ([timestamp] = @4))
SELECT [timestamp]
FROM [dbo].[cv_location]
WHERE @@ROWCOUNT > 0 AND [location_id] = @3',
N'
@0 datetime2(7),
@1 decimal(18,2),
@2 decimal(18,2),
@3 int,
@4 binary(8)',
@0='2014-04-16 09:58:20.9228016',
@1=52.38,
@2=5.18,
@3=45,
@4=0x000000000000FC05
注意小数参数是十进制的(18,2),这显然会导致我在插入/更新时丢失信息。
我在这里做错了什么,或者这只是EF6中的一个错误?
提前致谢。