Gus*_*tav 7 c# entity-framework
我创建了一个有一个名为Amount的列的表,我将其设置为Decimal.我无法找到将其设置为money或smallmoney的位置,当我尝试设置0.2的值时,它会舍入为0 ....
我如何在实体框架中使用资金?
谢谢!
Yoh*_*han 13
我的回答是关于 EF 6.0 在处理类似问题并使用 SQL Profiler 检查之后:实体框架将 Decimal 变量类型转换为 SQL 中的 Decimal(18, 2)。
如果您想保存 Money 类型,我建议您使用数据注释并添加
public class Account
{
public int AccountId { get; set; }
[Column(TypeName="money")]
public decimal Amount { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您使用 Fluent API
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Account>()
.Property(i => i.Amount)
.HasColumnType("money");
}
Run Code Online (Sandbox Code Playgroud)
所以我认为你的问题可能是关于代码优先的方法。另外,我不确定您使用的是哪个版本的 SQL,我下面的答案仅适用于 SQL Server。但是对于 Oracle 或 MySQL,您基本上都会以相同的方式进行操作。
模型第一:
使用 SQL Server,您只需为该字段选择“money”或“smallmoney”,具体取决于您需要表示的值的大小。
首先代码:
我需要表达最大 9999.99 的货币类型
在可视化 EDMX 编辑器中,您将选择标量属性,转到属性,然后将其设置为 Type = Decimal,然后将 Facets 设置为 Precision = 6 Scale = 2。您可以使用数据注释来确保显示该字段作为金钱输入。
| 归档时间: |
|
| 查看次数: |
7221 次 |
| 最近记录: |