Pracuję na małym narzędziu do obsługi bazy danych. Mój problem polega na tym, że z powodu ostatniej aktualizacji niektóre smallint-colums musiały zostać zmienione na integer.Entity Framework Code First - Przesyłaj smallint i integer do int32
public class TEST
{
public int ID { get; set; }
//public Int16 ID { get; set; }
public string TEST { get; set; }
}
Zmieniłem typ z Int16 na int. Wszystko działa dobrze, z tym wyjątkiem, że nie mogę go już używać ze starą wersją bazy danych. Wyjątek jest podobny do "System.Int32 spodziewany, znaleziony Typ System.Int16".
Czy istnieje sposób, aby rzucić wszystkie smallint i integer na int32?
Wszelkie pomysły? Moja okolica: EntityFramework 5.0.0 .NET 4.5 FirebirdClient 3.0.2.0
próbowałem wymusić oddanych w ModelBuilder:
modelBuilder.Entity<TEST>()
.Property(p => p.ID)
.HasColumnType("smallint");
Wyjątek:
Błąd 2019: Mapowanie Użytkownik jest określony nieważny. Typ 'Edm.Int32 [Nullable = False, DefaultValue =]' elementu 'ID' w Typ 'ContextRepository.TEST' nie jest zgodny z 'FirebirdClient.smallint [Nullable = False, DefaultValue =, StoreGeneratedPattern = Identity]' elementu 'Schluessel' typu 'CodeFirstDatabaseSchema.BUNDLAND'
podjęciu ID Int16, a następnie rzucając wszystko smallint (HasColumnType ("int")) działa bez zarzutu, ale dałby mi wyjątki z liczb większych niż 31767 (smallint max) ...
Dlaczego nie można uaktualnić bazy danych do użycia INTEGER dla tej kolumny? –
Piszę tylko program konserwacji i mam obawy o skutki uboczne w głównej aplikacji ... – Dust258