2013-03-29 17 views
7

Sto tentando di scrivere/leggere latitudine e longitudine in un database ms sql utilizzando C#, entity framework - database first e mvc.Prevenire l'arrotondamento decimale nel database Entity Framework prima

Il problema è che il lat/long viene mostrato con solo 2 posizioni decimali anche se sono corrette nel database. Il database ha i campi come numerici (18,6).

Ho modificato il file di contesto come segue:

protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<STORE_LOCATION>().Property(location => location.LATITUDE).HasPrecision(18, 6); 
     modelBuilder.Entity<STORE_LOCATION>().Property(location => location.LONGITUDE).HasPrecision(18, 6); 
    } 

2 Domande - Dovrei essere la modifica del OnModelCreating nel file di contesto - anche se si avverte cambiamenti potrebbero essere persi sulla rigenerazione e come faccio a mantenere la codice dall'arrotondamento dei decimali?

Qualsiasi aiuto apprezzato!

risposta

4

Devo modificare OnModelCreating nel file di contesto, anche se avverte che le modifiche potrebbero andare perse durante la rigenerazione e come posso evitare che il codice arrotonda i decimali?

No - implementare una classe parziale del contesto in un altro file e mettere in atto ci OnModelCreating

Per quanto riguarda la precisione - hai controllato i valori negli oggetti nel debugger contro la visualizzazione su una pagina? L'arrotondamento potrebbe verificarsi durante il rendering.

Prova ad aggiungere l'attributo DisplayFormat alla proprietà nella classe entità:

[DisplayFormat(DataFormatString = "{0:0.0#####}", ApplyFormatInEditMode = true)] 
+0

Grazie per la risposta. Sì, l'arrotondamento si sta verificando nel rendering. Qualche suggerimento su come prevenirlo? – user1069733

+0

stai assegnando il valore a un controllo che lo esegue? potrebbe essere necessario specificare la formattazione – Moho

+0

Sì - utilizzando @ Html.EditorFor (modello => modello.LATITUDE) – user1069733

Problemi correlati