我需要使用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'值。您必须将此属性设置为“Decimal”类型的非null值。
答案 0 :(得分:1)
似乎你在C#(十进制)中有固定的精度数据类型,在sql列上有浮点精度(实数或浮点数)。
将sql列类型更改为money / decimal / numeric类型或将C#字段类型更改为Single。
如果您处理货币或货物重量decimal将是最好的 - 它可以存储所有范围的值而不会丢失精确度。
sql server上的默认十进制是十进制(18,0)。如果您打算使用其他比例/精度,请让实体框架知道:modelBuilder.Entity<Carga>().Property(c=> c.PesoLiquido).HasPrecision(16, 10);
答案 1 :(得分:0)
数据类型“Single”与C#中的float
相同。没有从float
到decimal
的隐式转换。确保客户端设置decimal
值。