首先在Entity Framework模型中使用money类型

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)
  • 货币类型将转换为 (19, 4)


ejh*_*ost 0

所以我认为你的问题可能是关于代码优先的方法。另外,我不确定您使用的是哪个版本的 SQL,我下面的答案仅适用于 SQL Server。但是对于 Oracle 或 MySQL,您基本上都会以相同的方式进行操作。

模型第一:

使用 SQL Server,您只需为该字段选择“money”或“smallmoney”,具体取决于您需要表示的值的大小。

首先代码:

我需要表达最大 9999.99 的货币类型

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