[C#] decimal (10,0) 유형의 필드에 소수점을 추가하는 엔티티 프레임 워크


Answers

이것은 실제로 SqlClient의 버그입니다. SqlDecimal 코드는 일부 엣지의 경우 정확하게 정밀도를 처리하지 않습니다.

나는 범인이 여기 있다고 믿는다 : http://referencesource.microsoft.com/#System.Data/data/System/Data/SQLTypes/SQLDecimal.cs#416

그러나 이것이 오랫동안의 행동 이었기 때문에, 그것은 결코 고쳐지지 않을 것입니다. user1648371 과 Andrew Morton과 같이 bigint를 사용하여이 문제를 해결하는 것이 좋습니다.

Question

먼저 EF 데이터베이스를 사용하고 있습니다. 내 데이터베이스에서 나는 내가 항상 10 자리 숫자를 삽입 할 수있는 테이블에 값을 삽입 할 때 decimal(10,0) 유형을 선택했습니다. 그러나 EF6로 엔티티를 삽입 할 때 10 진수를 더한 다음 범위를 벗어나는 매개 변수를 throw합니다. 내 C # 코드의 필드 유형은 decimal

context.SaveChanges() 를 호출하기 직전 엔티티가 있습니다.

그리고 온 전성 검사는 SQL Server의 열입니다.

편집 :

다음은 EF 매핑입니다.

코드 플렉스에서보고했습니다 .