C# EntityFramework参数值超出范围

C# EntityFramework参数值超出范围,c#,asp.net,sql-server,asp.net-mvc,entity-framework,C#,Asp.net,Sql Server,Asp.net Mvc,Entity Framework,尽管已经阅读了所有答案,但无法处理十进制和EF。 我有一个SQLServer 2012表(Traffico),它定义了这个字段: [traffico_out] [decimal](30, 10) NULL 如果我使用此简单查询进行测试: UPDATE dbo.Traffico SET traffico_out=55534448359.141929 WHERE id=10; 所有工作正常,并存储十进制值 我必须使用EntityFramework6部署一个ASP.NETMVC4应用程序,首先使用

尽管已经阅读了所有答案,但无法处理十进制和EF。 我有一个SQLServer 2012表(Traffico),它定义了这个字段:

[traffico_out] [decimal](30, 10) NULL
如果我使用此简单查询进行测试:

UPDATE dbo.Traffico
SET traffico_out=55534448359.141929
WHERE id=10;
所有工作正常,并存储十进制值

我必须使用EntityFramework6部署一个ASP.NETMVC4应用程序,首先使用数据库方法。 我已经从现有表开始生成了模型

上下文

public partial class PeeringEntities : DbContext
{

  public PeeringEntities()
    : base("name=PeeringEntities")
  {
  }

  protected override void OnModelCreating(DbModelBuilder modelBuilder)
  {
    throw new UnintentionalCodeFirstException();
  }

  public virtual DbSet<Traffico> Traffico { get; set; }

}
在SaveChanges时,我得到了一个DbUpdateException:

InnerException: An error occurred while updating the entries. See the inner exception for details.
InnerException -> InnerException: {"Parameter value '5283148511,91876' is out of range."}
我做错了什么

编辑 查看我的输出目录,我发现了三个由我的EDMX生成的文件:

  • .csdl
  • msl先生
  • .ssdl
  • 尽管有edmx精度和比例,但我在.ssdl中发现:

    <Property Name="traffico_out" Type="decimal" Precision="12" Scale="5" />
    
    
    

    现在我真的很困惑:我该如何改变它?

    55534448359.141929
    比存储在
    十进制(12,5)
    中的值大

    12(精度)是数字中允许的最大数字,因此为9999999999
    刻度是小数点后的最大位数。因此,99999999.99999是小数点(12,5)中可以存储的最高小数点。

    您的错误消息有
    '528314851191876'
    (逗号作为分隔符),但您的测试是使用
    设置流量=55534448359.141929
    (点作为分隔符)这只是一个输入错误吗?@Stephen Muecke:谢谢您的查看。我不知道,可能这取决于本地设置(在意大利逗号是十进制分隔符)。我的代码正是您阅读的代码。请尝试在输入中键入double或将MaxLength/mask设置为与db thank you link中相同,但将traffico_out从decimal更改为double会生成编译错误。谢谢jvanrhyn,但“id”字段由服务器计算。外场的交通是我必须设置的。
    Traffico _new_item = new Traffico();
    _new_item.traffico_out = 5283148511.91876M;
    db.Traffico.Add(_new_item);
    db.SaveChanges();
    
    InnerException: An error occurred while updating the entries. See the inner exception for details.
    InnerException -> InnerException: {"Parameter value '5283148511,91876' is out of range."}
    
    <Property Name="traffico_out" Type="decimal" Precision="12" Scale="5" />