实体框架数据库第一个十进制精度

时间:2015-09-18 02:24:48

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

我是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));

2 个答案:

答案 0 :(得分:1)

这个过程并不尽如人意,但你可以在属性中完成。请参阅以下2个链接:

Entityframework model first decimal precision

带图片:

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

答案 1 :(得分:-1)

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

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

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

这将很容易解决问题。

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

同样在列表和细节中,使用model属性而不是@Html.DisplayFor方法。

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

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