내 데이터베이스 필드 (SQL Server 2005)는 숫자 (15,2)로 정의됩니다.소수 자릿수가 올바르게 반올림되지 않습니다. LINQ to SQL 버그입니까?
제가 가그때 context.SubmitChanges()
위에 스텝이 속성 = 23.6363636363 (등)에 대한 개체의 값을 확인 LINQ 2 SQL 생성 재산권 디버그
[Column(Storage="_My_Property_Name", DbType="Decimal(15,2)", UpdateCheck=UpdateCheck.Never)]
public System.Nullable<decimal> My_Property_Name
{
get
{
return this._My_Property_Name;
}
set
{
if ((this._My_Property_Name != value))
{
this.OnMy_Property_NameChanging(value);
this.SendPropertyChanging();
this._My_Property_Name = value;
this.SendPropertyChanged("My_Property_Name");
this.OnMy_Property_NameChanged();
}
}
}
이다
SQL 프로파일 러가 실행 중이며 업데이트 진술입니다.
exec sp_executesql N'
UPDATE [Staging].[My_Table_Name]
SET [LAST_UPDATE_DATE] = @p2, [Field1] = @p3, [Field2] = @p4, [Field3] = @p5, [Field4] = @p6, [Field5] = @p7, [Field6] = @p8, [Field7] = @p9
WHERE ([Id] = @p0) AND ([RecordVersion] = @p1)
SELECT [t1].[RecordVersion] FROM [Staging].[My_Table_Name] AS [t1]
WHERE ((@@ROWCOUNT) > 0) AND ([t1].[Id] = @p10)',N'@p0 int,@p1 timestamp,@p2 datetime,@p3 decimal(21,8),@p4 decimal(21,8),@p5 decimal(21,8),@p6 decimal(21,8), @p7 decimal(21,8),@p8 decimal(21,8),@p9 decimal(15,2),@p10 int',@p0=2935,@p1=0x0000000000323018,@p2='2010-02-26 16:49:21:690', @p3=99.99992307,@p4=99.99992307,@p5=99.99992307,@p6=99.99992307,@p7=99.99992307,@p8=99.99992307,
@p9=23.63,@p10=2935
@ p9 = 23.63을 보면 알 수 있듯이 23.64가됩니다.
업데이트
내 질문은,
이 나는이를 찾을 거라고 나는 그것이 알려진 하나가 될 것으로 기대 SQL 버그에 LINQ 인 경우; 어딘가에 유지 된 버그 목록이 있습니까?
또한 은 무엇 주변의 최고의 작품이 될 것인가? 내가 버그를 수정하지 않을 15,3에 필드를 변경 같은데요
- , 그것은 단지 1 개 소수점 자리를 이동합니다.
- OnMy_Property_NameChanged()를 재정의하면이 속성이 작동하지만 그 중 많은 수가 있습니다.
업데이트 2
이이 submitchanges 전에이 코드 조각으로 가서 일을 표시하지만, 생성 된 업데이트 SQL은 여전히이 둥글게 업데이트되지 잘린 값을 가지고, 하나가 작동하지 않았다 값.
partial void OnMy_Property_Name_ChangingChanging(decimal? value)
{
if (!value.HasValue)
{
return;
}
value =
Math.Round(value.Value, 2, MidpointRounding.AwayFromZero);
}
현재 수정 된 사항은 엔티티 값을 직접 업데이트하는 것입니다.
23.63636363636363으로 데이터베이스를 직접 업데이트하면 23.64 ...가됩니다. 괜찮습니다. 속성을 재정의하면이 속성이 수정되지만 15,2 개의 정의 된 필드가있는 큰 DB가됩니다. 모든 개체에 대해 실제로 그렇게하고 싶지는 않습니다. 나는 Linq 2 Sql 버그가 있다면 그것은 이전에 발견되었을 것이라고 생각합니까 ?? (답을 주셔서 감사합니다) –
당신이 그것에 대해 확신을 가지면 리플렉터를 사용하여 linq2sql 내부를 파고들 것을 제안합니다. 분명히 그것은 쿼리 생성기에 관한 것입니다. –