我在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)
并正确保存记录。
你有什么想法吗?
谢谢, 最大
答案 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();