Ho cercato di capire come impostare la precisione decimale per EF7 (Beta 4) senza fortuna.Entity Framework 7 Imposta la precisione decimale per il model builder
mi aspettavo di fare qualcosa di simile:
modelBuilder.Entity<SomeClass>().Property(p => p.DecimalProperty).Precision(10, 6)
Questo non sembra essere disponibile, ma sono stato in grado di trovare la seguente classe nel repository di GitHub:
Non ci sono esempi di utilizzo delle classi RelationalTypeMapping o delle firme del metodo con esse. Forse questo è solo usato come parte della API di mappatura per il recupero delle informazioni?
Un altro posto potrei aspetto che questo sia è il seguente:
modelBuilder.Entity<SomeClass>().Property(p => p.DecimalProperty).ForRelational().ColumnType()
o
modelBuilder.Entity<SomeClass>().Property(p => p.DecimalProperty).ForSqlServer().ColumnType()
questi solo prende una stringa, è questa funzionalità non solo ancora implementato o Non sono io solo cercando nel posto giusto?
Edit: appena realizzato che stringa è probabilmente per .ColumnType ("decimale (10,6)") tipo di soluzione fino a quando questo è costruita inoltre, ancora non mi dispiacerebbe ottenere qualche chiarimento anche se, come io preferirei non usare le stringhe per questo
Edit: dopo chiarimenti da bricelam ho finito per creare la seguente estensione da utilizzare per ora per evitare di utilizzare la stringa, e apprezzo la semplicità del loro approccio:
public static RelationalPropertyBuilder DecimalPrecision(this RelationalPropertyBuilder propertyBuilder, int precision, int scale)
{
return propertyBuilder.ColumnType($"decimal({precision},{scale})");
}
Esempio di utilizzo:
modelBuilder.Entity<SomeClass>().Property(p => p.DecimalProperty).ForRelational().DecimalPrecision(10,6);
Edit: Fare di modifica per RC1
non ho ancora testato questi fuori, ma ho appena gettato insieme il seguente 2 campioni di ciò che questo sarà probabilmente simile con RC1
public static PropertyBuilder DecimalPrecision(this PropertyBuilder propertyBuilder, string precision, string scale)
{
return propertyBuilder.HasColumnType($"decimal({precision},{scale})");
}
public static PropertyBuilder SqlDecimalPrecision(this PropertyBuilder propertyBuilder, string precision, string scale)
{
return propertyBuilder.ForSqlServerHasColumnType($"decimal({precision},{scale})");
}
Poiché non ho ancora provato questo non sono sicuro quale sarebbe l'uso corretto tra "HasColumnType" o "ForSqlServerHasColumnType", ma si spera che questo indicherà qualcuno nella giusta direzione.
Poiché tutte le mie proprietà decimali hanno la stessa precisione, in qualche modo l'implementazione su tutti su una riga? Stavo usando questo con EF6: 'modelBuilder.Properties() .Configure (x => x.HasPrecision (18, 6));' –
GregoryHouseMD
@reala valoro, Ho aggiornato i dettagli per riflettere le modifiche di RC1 –