实体框架代码数据迁移中的第一个小数精度

时间:2014-04-16 08:15:43

标签: sql-server ef-code-first entity-framework-6 ef-migrations

我已经为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中的一个错误?

提前致谢。

0 个答案:

没有答案