2011-07-08 12 views
25

Powiel możliwe:
Entity Framework Code First: decimal precisionJak zapobiec przycinaniu wartości dziesiętnych do 2 miejsc przy użyciu EntityFramework 4.1 CodeFirst?

Używam Linq-Podmioty z EntityFramework 4.1 Kod pierwszego systemu. Wszystkie moje właściwości decimal są przycinane do dwóch miejsc po przecinku podczas składowania. Mogę zbadać modyfikowany obiekt i widzę w debugerze, że ma odpowiednią liczbę miejsc po przecinku i mogę zakodować wartość w bazie danych, aby pokazać, że może ona zaakceptować właściwą liczbę miejsc dziesiętnych [w tym przypadku, decimal(4,3) ]. Ale gdy zapiszę wartość, to nigdy nie zapisuje ona poprawnie, ale zamiast tego obcina wartości decimal do dwóch miejsc dziesiętnych. Nie byłem w stanie znaleźć klasy w System.ComponentModel.DataAnnotations, która pozwala określić precyzję. Klasa (oczyszczone), dla odniesienia jest:

public class Metrics 
{ 
    public decimal? PPM { get; set; } 
} 

Odpowiedz

36
public class MyContext : DbContext 
{ 
    public DbSet<Metrics> Metrics { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Metrics>().Property(x => x.PPM).HasPrecision(4, 3); 
    } 
} 
+0

Gdzie musimy dodać tę klasę? – Ahmed

+0

to dobrze, znalazłem, @Ahmed można umieścić go w ApplicationDbContext lub kontekstu, który używasz dla modeli bazy danych – SAR

Powiązane problemy