【问题标题】:Store and manage SQL Server data types存储和管理 SQL Server 数据类型
【发布时间】:2023-03-20 13:20:01
【问题描述】:

我需要使用 LINQ 存储和操作以下模型,并将数据存储在 SQL Server Express 中:

我这样设置属性:

public DbSet<Carga> Cargas { get; set; }

public class Carga
{
    public decimal PesoLiquido { get; set; }
}

要操作以下值:1 / 1.0 / 1.10 / 1.012

C# 和 Sql-Server 中正确的类型是什么?

我收到如下错误:

public ActionResult Index()
{
    return View(db.Cargas.ToList());
}

“Carga”上的“PesoLiquido”属性无法设置为“Single”值。您必须将此属性设置为“十进制”类型的非空值。

【问题讨论】:

  • 视图中的模型是什么。您发送的 Carga 列表不是单个值。

标签: c# sql entity-framework


【解决方案1】:

似乎您在 C# 中具有固定精度数据类型(十进制)和 sql 列上的浮点精度(实数或浮点数)。

要么将 sql 列类型更改为货币/十进制/数字类型,要么将 C# 字段类型更改为 Single。

如果您处理金钱或货物重量decimal 将是最好的 - 它可以存储所有范围的值而不会丢失精度。

sql server 上的默认十进制是十进制(18,0)。如果您打算使用其他比例/精度,请让实体框架知道:modelBuilder.Entity&lt;Carga&gt;().Property(c=&gt; c.PesoLiquido).HasPrecision(16, 10);

【讨论】:

  • 啊,你可能是对的。我以为这是关于客户端设置的属性,OP对此不太清楚。
【解决方案2】:

数据类型“Single”与 C# 中的 float 相同。没有从floatdecimal 的隐式转换。确保 decimal 值由客户端设置。

【讨论】:

    猜你喜欢
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    相关资源
    最近更新 更多