EntityFramework:“参数值超出范围。”

时间:2013-11-28 11:10:46

标签: c# sql-server entity-framework

我在EntityFramework(模型优先)中保存小数时遇到问题。 在我的EDMX中,我宣称我的主人为十进制(30,10)然后我试图保存这个数字: '1215867935736100000'

结果是:

Parameter value '1215867935736100000' is out of range.

我尝试使用SQL Server 2008 R2 Management Studio进行INSERT查询

INSERT INTO MyTable (MyColumn) VALUES (1215867935736100000)

并正确保存记录。

你有什么想法吗?

谢谢, 最大

1 个答案:

答案 0 :(得分:0)

这可能是您正在使用的EF版本的问题。

我有问题的代码第一版,几乎可以重现你得到的错误。我得到的错误包括消息中的.00

  

{“参数值'1215867935736100000.00'超出范围。”}

我解决它的方法是将.HasPrecision(30,10)添加到EntityTypeConfiguration类。

this.Property(t => t.value)
    .HasColumnName("value")
    .HasPrecision(30,10) //this line resolves the problem in my test code
    .IsRequired();

这不能解决您的问题但我至少可以确认Entity Framework可以将值1215867935736100000写入数据库。

CREATE TABLE [dbo].[TestTable1](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [value] [decimal](30, 10) NOT NULL
) ON [PRIMARY]

测试代码:

MyContext testTableContext = new MyContext();
TestTable1 testTable1 = new TestTable1();
testTable1.value = 1215867935736100000;
testTableContext.TestTable1.Add(testTable1);
testTableContext.SaveChanges();