Sto usando Entityframework 6 con il modello per primo. Nel diagramma ho scelto il decimale per il mio tipo di dati. Quando salvi i valori decimali, il database ha solo numeri interi e i decimali vengono eliminati.
Il mio primo sospetto è stato quello di verificare la precisione, tuttavia andando alla finestra delle proprietà dal progettista del primo diagramma del modello, i menu a discesa di precisione e scala non hanno altre opzioni oltre a "Nessuno".
Come posso ottenere EF per salvare i miei decimali? È un problema di precisione? In tal caso, come posso impostare la precisione in questo caso?
OK, mi sento un po 'sciocco per non averlo capito prima, ma questa è una soluzione semplice.
Nella finestra delle proprietà della colonna nella finestra di progettazione di edmx, sia la precisione che la scala sono un menu a discesa, ma consentono comunque di digitarvi. Quindi ho appena inserito 2 in per scala, premi invio e ha funzionato.
Non sei sicuro del motivo per cui sono configurati per essere a discesa se non ti forniscono valori preimpostati e ti aspetti di digitarli.
Un'altra cosa da notare è che la funzionalità "Aggiorna modello dal database" di Entity Framework può essere molto problematica. Nel mio caso ho modificato alcuni campi di database da 2 precisione decimale a 4 decimale di precisione, quindi ho aggiornato il modello dal database, ma non ha modificato la proprietà della scala quando ho esaminato il campo nella finestra delle proprietà di questa tabella in. diagramma edmx. Così ho modificato manualmente la scala da 2 a 4 e riprovato, ma continuavo a salvare i dati con 2 cifre decimali. Un riavvio di Visual Studio ancora non funzionava, quindi ho provato ad aggiornare il modello dal database ancora una volta, e questa volta ha funzionato.
Questa non è la prima volta che il modellatore visivo del database in Visual Studio mi ha dato dolore. Preferisco il code-first per avere il controllo su tutto, e questo è solo uno dei motivi per cui. Aggiornamenti completi e accurati del modello non sono mai di routine.