C# EntityFramework参数值超出范围
尽管已经阅读了所有答案,但无法处理十进制和EF。 我有一个SQLServer 2012表(Traffico),它定义了这个字段: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应用程序,首先使用
[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生成的文件:
<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" />