Korzystam z Entity Framework 6.1, najpierw kodu. Próbuję zapisać/pobrać dziesiętne z SQL Server, ale poprawna precyzja nie jest pobierane. Czytam z pliku .csv, przetwarzam dane, a następnie wstawiam do DB.EF pobiera niepoprawną dokładność dziesiętną
- wartość w pliku csv:
1.1390
- wartość, gdy zapisany jako
decimal
z importu:1.1390
- wartość wstawiona do DB:
1.139
- Wartość rzeczywistości przechowywana/przedstawiono w SSMS:
1.1390
- Wartość podczas ręcznego uruchamiania kwerendy SQL Profiler przechwytuje w celu pobrania:
1.1390
- Wartość pobrana przez EF:
1.1300
Wszystko działa z wyjątkiem pobierania wartości. Próbowałem rozwiązania podanego w każdym innym poście SO (poniżej), ale nie ma ono żadnego efektu. Co tu jest nie tak? Jak mogę odzyskać poprawną wartość z właściwą precyzją?
rzekomej rozwiązanie:
modelBuilder.Entity<ClassA>().Property(p => p.MyDecimal).HasPrecision(19, 4);
Metoda pobierania, powraca z niewłaściwego typu ClassA
precyzją:
_poRepository.Table.FirstOrDefault(p => p.CompNumberA == compNum &&
p.LineNumber == lineNumber);
Porównanie pomiędzy tymi dwoma wartościami po przecinku:
import.MyDecimal != dbValue.MyDecimal
ClassA
:
public class ClassA
{
// properties
public virtual decimal MyDecimal { get; set; }
}
Jak wyświetla się precyzja "1.1300"? –
Nie powiedziałeś, z jakiej metody EF korzystasz, np. Kod Najpierw nie pokazałeś swojego modelu. Wydaje się mało prawdopodobne, aby ktokolwiek mógł pomóc bez krytycznych informacji. –
@BradleyUffner Moja kontrola różnic w wartości zwracanej z DB i wartości podanej z pliku .csv. Porównanie pokazuje, że są nierówne. Kiedy patrzę na zmienną w punkcie przerwania, Visual Studio pokazuje wartość jako '1.1300'. – vaindil