【问题标题】:Defining decimal property - decimal (18,2)定义十进制属性 - 十进制 (18,2)
【发布时间】:2019-08-02 19:02:57
【问题描述】:

我需要帮助为我的模型中的 decimal (18,2) 列映射属性。 我尝试只使用.Net decimal,但是当我输入例如12.12在输入字段中这个数字将被保存为1212,00

public decimal Ocjena1 { get; set; }

我找不到解决方案。我应该如何在我的模型中声明属性以匹配此列?

【问题讨论】:

  • 公共十进制 Ocjena1 { get;放; } 是我模型中的这个属性
  • 映射是什么意思?你在使用像实体框架这样的 ORM 吗?如果是这样,您需要提供属性或流畅的映射并指定精度/比例。您在何处/如何执行此操作取决于 ORM。
  • 我使用实体框架,一切正常,我只有在数据库中正确映射数据存在问题。我尝试使用 [Column(TypeName = "decimal(18, 2)")] 但它不起作用
  • 另外,我尝试添加:modelBuilder.Entity() .Property(s => s.Ocjena1).HasColumnType("decimal(18,2)");在我的上下文中
  • 请添加minimal reproducible example,因为没有足够的信息来确定您的代码失败的位置/原因。

标签: .net asp.net-core decimal data-annotations


【解决方案1】:

问题是您的浏览器文化无法识别.,它使用,而不是.来表示数字。

当我在现场使用[Column(TypeName = "decimal(18, 2)")] 时效果很好,直到我更改我的应用程序文化以支持hr,它使用逗号而不是点来表示数据并将克罗地亚语设置为浏览器语言的顶部。然后我有相同的情况。

var supportedCultures = new[]
        {
            new CultureInfo("en-US"),
            new CultureInfo("hr"),
        };

app.UseRequestLocalization(new RequestLocalizationOptions
        {
            DefaultRequestCulture = new RequestCulture("en-US"),
            // Formatting numbers, dates, etc.
            SupportedCultures = supportedCultures,
            // UI strings that we have localized.
            SupportedUICultures = supportedCultures
        });
//other middlewares
app.UseMvc()

尝试检查您的应用文化和浏览器排序文化。如果您使用逗号,还需要输入12,12

【讨论】:

    猜你喜欢
    • 2013-11-17
    • 2018-01-26
    • 1970-01-01
    • 2011-12-09
    • 2014-04-20
    • 1970-01-01
    • 2018-07-26
    • 2019-03-11
    相关资源
    最近更新 更多