Sto lavorando su un piccolo strumento di servizio per un database. Il mio problema è che a causa dell'ultimo aggiornamento, alcuni interstizi devono essere trasformati in numeri interi.Entity Framework Code First - Trasmetti smallint e intero a int32
public class TEST
{
public int ID { get; set; }
//public Int16 ID { get; set; }
public string TEST { get; set; }
}
Ho cambiato il tipo da Int16 a int. Tutto funziona bene, tranne che non posso più usarlo con la vecchia versione del database. L'eccezione è qualcosa di simile a "System.Int32 atteso, trovato Typ System.Int16".
C'è un modo per eseguire il cast di intere e intere?
Qualche idea? Il mio ambiente: EntityFramework 5.0.0 .NET 4.5 FirebirdClient 3.0.2.0
ho cercato di forzare un cast nel ModelBuilder:
modelBuilder.Entity<TEST>()
.Property(p => p.ID)
.HasColumnType("smallint");
Eccezione:
errore 2019: Mappatura membro specificato è non valido. Il tipo 'Edm.Int32 [Nullable = False, DefaultValue =]' del membro 'ID' in Typ 'ContextRepository.TEST' non è compatibile con 'FirebirdClient.smallint [Nullable = False, DefaultValue =, StoreGeneratedPattern = Identity]' del membro 'SCHLUESSEL' nel tipo 'CodeFirstDatabaseSchema.BUNDLAND'
Fare il ID Int16 e poi colata di tutto per smallint (HasColumnType ("Int")) funziona bene, ma mi avrebbe dato eccezioni con i numeri più grandi di 31767 (max smallint) ...
Perché non è possibile aggiornare il database per utilizzare INTEGER per questa colonna? –
Sto solo scrivendo un programma di manutenzione e ho dubbi sugli effetti collaterali nell'applicazione principale ... – Dust258