存储和管理SQL Server数据类型

时间:2014-02-27 18:44:53

标签: c# sql entity-framework

我需要使用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值。

2 个答案:

答案 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相同。没有从floatdecimal的隐式转换。确保客户端设置decimal值。