Ich arbeite an einem kleinen Service-Tool für eine Datenbank. Mein Problem ist, dass aufgrund der letzten Aktualisierung einige Smallint-Spalten in Integer geändert werden mussten.Entity Framework Code zuerst - Cast Smallint und Integer zu Int32
public class TEST
{
public int ID { get; set; }
//public Int16 ID { get; set; }
public string TEST { get; set; }
}
Ich änderte den Typ von Int16 zu Int. Alles funktioniert gut, außer dass ich es nicht mehr mit der alten Version der Datenbank verwenden kann. Die Ausnahme ist etwas wie "System.Int32 erwartet, Typ System.Int16 gefunden".
Gibt es eine Möglichkeit, alle Smallint und Integer auf Int32 zu werfen?
Irgendwelche Ideen? Meine Umwelt: EntityFramework 5.0.0 .NET 4.5 FirebirdClient 3.0.2.0
Ich habe versucht, eine Besetzung in der Modellbauer zu zwingen:
modelBuilder.Entity<TEST>()
.Property(p => p.ID)
.HasColumnType("smallint");
Ausnahme:
Fehler 2019: Member Mapping angegeben ist ungültig. Der Typ 'Edm.Int32 [Nullable = False, DefaultValue =]' der Mitglieds-ID im Typ 'ContextRepository.TEST' ist nicht kompatibel mit 'FirebirdClient.smallint [Nullable = False, DefaultValue =, StoreGeneratedPattern = Identität]' des Mitglieds 'SCHLUESSEL' in Typ 'CodeFirstDatabaseSchema.BUNDLAND'
die ID Int16 Stellen und dann alles Gießen in smallint (HasColumnType ("int")) funktioniert gut, aber würde ich Ausnahmen mit Nummern größer als 31767 (Smallint max) ...
Warum können Sie die Datenbank nicht aktualisieren, um INTEGER für diese Spalte zu verwenden? –
Ich schreibe nur ein Wartungsprogramm und habe Bedenken über Nebenwirkungen in der Hauptanwendung ... – Dust258