Ich habe versucht, herauszufinden, wie die Dezimalgenauigkeit für EF7 (Beta 4) ohne Glück einzustellen.Entity Framework 7 Dezimalgenauigkeit für Modell Builder
Ich habe erwartet, wie etwas zu tun:
modelBuilder.Entity<SomeClass>().Property(p => p.DecimalProperty).Precision(10, 6)
Das ist nicht verfügbar zu sein scheint, aber ich war in der Lage die folgende Klasse im Repository in GitHub zu finden:
Es gibt keine Beispiele für die Verwendung der RelationalTypeMapping-Klassen oder Methodensignaturen mit ihnen. Vielleicht wird dies nur als Teil der Mapping-API zum Abrufen von Informationen verwendet?
Ein weiterer Ort, den ich dies erwarten könnte zu sein, ist die folgende:
modelBuilder.Entity<SomeClass>().Property(p => p.DecimalProperty).ForRelational().ColumnType()
oder
modelBuilder.Entity<SomeClass>().Property(p => p.DecimalProperty).ForSqlServer().ColumnType()
Diese nur einen String, ist diese Funktionalität nur noch nicht implementiert oder bin ich gerade nicht auf der Suche an der richtigen Stelle?
Edit: Gerade festgestellt, dass Zeichenfolge ist wahrscheinlich für .ColumnType ("Dezimal (10,6)") Art der Lösung, bis dies weiter ausgebaut ist, würde immer noch etwas Klärung, obwohl ich lieber würde nicht für diese Strings zu verwenden
Edit: nach Klärung von bricelam endete ich die folgende Erweiterung der Erstellung bis jetzt zu verwenden, um die Zeichenfolge zu vermeiden, verwenden, und ich schätze die Einfachheit ihres Ansatzes:
public static RelationalPropertyBuilder DecimalPrecision(this RelationalPropertyBuilder propertyBuilder, int precision, int scale)
{
return propertyBuilder.ColumnType($"decimal({precision},{scale})");
}
Anwendungsbeispiel:
modelBuilder.Entity<SomeClass>().Property(p => p.DecimalProperty).ForRelational().DecimalPrecision(10,6);
Edit: machen Modifikation für RC1
Ich habe diese noch nicht getestet, aber ich warf nur zusammen die folgenden zwei Proben von dem, was diese wahrscheinlich mit RC1 aussehen
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})");
}
Da ich dies noch nicht ausprobiert habe, bin ich nicht sicher, welche die richtige Verwendung zwischen "HasColumnType" oder "ForSqlServerHasColumnType" wäre, aber hoffentlich wird dies jemanden in die richtige Richtung weisen.
Da alle meine Dezimal-Eigenschaften die gleiche Genauigkeit haben, können Sie diese auf allen in einer Zeile implementieren? Ich benutzte dies mit EF6: 'modelBuilder.Properties() .Konfigurieren (x => x.HasPrecision (18, 6));' –
GregoryHouseMD
@reala valoro, ich habe die Details aktualisiert, um RC1 Änderungen widerzuspiegeln –