【问题标题】:Entity Framework Database First Decimal Precision实体框架数据库第一小数精度
【发布时间】:2015-12-15 01:30:50
【问题描述】:

我是 MVC 新手,我使用 EF6 使用数据库优先(sql server 2008)方法。我的问题是我试图保存一个小数点后 3 位的十进制值,保存是可以的,但是当我在我的 SQL Server 2008 数据库中查看它时,它保存了 2 个精确的小数位,然后是零。
例如,我试图保存 0.025,我可以在我的保存方法中看到它通过了 0.025,但是当我查看保存在我的数据库中的内容时,它是 0.0200,数据库数据类型是十进制(18,4)。我究竟做错了什么?请帮忙!

更新:
我可能已经发现了类似的问题,并回答了我必须在模型创建中设置小数精度,但我该怎么做,因为它似乎只适合代码优先方法:
Set decimal(16, 3) for a column in Code First Approach in EF4.3

modelBuilder.Properties<decimal>().Configure(c => c.HasPrecision(18, 3));

【问题讨论】:

标签: c# sql-server asp.net-mvc


【解决方案1】:

该过程并不像它可能的那样清晰,但是您可以在属性中执行它。查看这两个链接:

Entityframework model first decimal precision

配图:

Why does my Entity Framework turn '2.87' into just '2' (decimal field)?

【讨论】:

    【解决方案2】:

    长话短说,我看到了答案,这就是答案

    第 1 步 将sql server数据库表的数据类型改为'float'

    第 2 步 将相应的 ASP.NET 模型属性数据类型更改为 'double'

    这样就很容易解决问题了。

    但是,您在保存(在创建中)和编辑(在编辑中)视图时可能会出错。要解决这些问题,只需将@Html.EditFor 更改为与属性名称同名的手动文本框即可。

    同样在列表和细节中,使用模型属性代替@Html.DisplayFor 方法。

    对于如何更改视图,模型数据类型和数据库表数据类型还不清楚的人,这里是an article explaining this

    但是,如果您了解 ASP.NET MVC 和实体框架的基础知识,则无需阅读完整的文章。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-02
      • 1970-01-01
      • 2016-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多