首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >首先在实体框架模型中使用money类型

首先在实体框架模型中使用money类型
EN

Stack Overflow用户
提问于 2011-06-17 04:03:00
回答 3查看 16K关注 0票数 15

我创建了一个表,其中有一个名为Amount的列,并将其设置为Decimal。我找不到将其设置为money或smallmoney的位置,当我尝试设置一个像0.2这样的值时,它四舍五入为0……

如何在实体框架中使用money?

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2014-05-09 00:05:54

Entity Framework的一个恼人之处在于,它在SQL中将Decimal变量类型转换为Decimal(18,0)。

逗号后面的数字是该数字允许的小数位数。因此,Decimal(18,0)在保存时将去掉小数点后的数字。

转到SQL Server Management stuido,找到您的数据库,右键单击表并选择"Design“。然后从列表中选择列,只需在框中键入就可以将数据类型更改为Decimal(18,2)。然后将更改保存到表中。然后,它将把数字保存到西方货币交易中通常使用的两个小数位。如果需要更多的小数位,只需相应地增加括号内的第二个数字即可。

我从来没有找到一个设置来改变这个EF默认值,使其生成Decimal(18,2)。但我从来没有看过:在DB中更改它很容易。但如果有人知道其中一个,我很想知道它是怎么做到的。

编辑:更多信息-包括配置修复-在此答案中:Decimal precision and scale in EF Code First

票数 3
EN

Stack Overflow用户

发布于 2014-05-08 23:12:15

所以我认为你的问题可能是代码优先的方法。另外,我不确定您使用的是哪个版本的SQL,我下面的回答仅适用于SQL Server。但对于Oracle或MySQL,基本上都是这样做的。

模型优先:

使用SQL Server时,您只需根据需要表示的值的大小,为字段选择"money“或"smallmoney”。

代码优先:

我需要表示一个最大为9999.99的货币类型

在可视化的EDMX编辑器中,您将选择标量属性,转到Properties,然后将其设置为Type = Decimal,然后将Facets设置为Precision =6 Scale = 2。您可以使用数据注释来确保字段显示和输入为货币。

票数 0
EN

Stack Overflow用户

发布于 2015-02-28 09:35:14

这类似于Decimal precision and scale in EF Code First。我使用的是EF 6.1和code first,由于某种原因,它默认将smallmoney定义为精度2,尽管它是/应该是4。你需要添加一些流畅的代码来修复这个问题。我使用类似这样的东西:

public static void OnModelCreating(DbModelBuilder modelBuilder)
{
        modelBuilder.Entity<MYCLASSNAME>().Property(x => x.MYPROPNAME).HasPrecision(5+4, 4);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6377885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档