2013-08-25 1 views
1

현재 MS SQL Server에서 money 열 유형을 설정하는 데 다음을 사용하고 있습니다.Fluent API HasColumnType - 데이터베이스 불가지론

entity.Property(e => e.UnitPrice).HasColumnType("smallmoney"); 

또는

entity.Property(e => e.UnitPrice).HasColumnType("money"); 

모든 경우에, 더 데이터베이스 무신론자 방법은 무엇입니까?

답변

1

Money 대신 Decimal을 사용하십시오. C# 및 Db에서 Decimal을 사용하십시오.
또한 금융 및 통화 계산에 적절하게

을 명시

modelBuilder.Entity<MetaDomain>().Property(d => d.xyz).HasPrecision(precision, scale); 

decimals in SQL server docu

MSDN decimal 참조하십시오.

확실하게 10 진수는 통화를 처리하는 데 사용할 수있는 DB와 관련이 없습니다. 필요한 통화와 정확도에 맞게 정밀도/스케일을 선택해야합니다. 그리고 솔루션을 결코 알 수 없거나 1 통화 이상으로 적용 할 수 없다는 것을 알지 못한다면 금액과 함께 통화 자체를 추적 할 것을 제안합니다.

"금전 금액"이란 통화 자체가 설명하는 것보다 4 자리의 여분의 자릿수를 의미합니다. 센트의 분율로 항목을 관리하는 대량 소매 업체와 같은 산업 이래. 프리젠 테이션에서 소매 업체에게 4 자리 소수 자릿수를 데모해야했습니다. 그것은 많은 다른 화폐를 제공하고 더 많은 조직이 주택 담보로하는 것, 적어도 5 자릿수를 제공하는 것을 의미합니다. 그저 그런 경우를 대비 한 계획입니다. XDR special drawing rights

+2

필 필자는 OP가 데이터베이스 공급 업체가 표시하는 가장 적합한 데이터 유형에 매핑하는 방법을 찾고 있다고 생각합니다. 각 공급 업체에 대한 매핑을 별도로 정의하지 않아도됩니다. 따라서 Sql Server의 경우 'numeric (d, p)'오라클 등일 때 돈이 될 것입니다. –

+0

안녕하세요. Gert, 맞을지 모르지만 여전히 "돈"을 올바른 선택으로 만듭니다. 그리고 나는 DB 벤더 잠금 장치를 추천 할 수 없다. –