這可能是與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();
這不解決您的問題,但我至少可以確認是可能的實體框架來寫值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();
在SQL Server的表中生成什麼數據類型? – Kaido
我想同樣的問題已經解決了這裏,按照以下鏈接 http://stackoverflow.com/questions/1455547/sql-server-decimal30-10-losing-last-2-decimals –
你的精度是太大。您在該列中存儲什麼類型的數據?您應該熟悉[精度,縮放和長度](http://msdn.microsoft.com/zh-cn/library/ms190476.aspx)在SQL Server中的工作方式。 – James