Jestem nowym użytkownikiem kodu EF5 Najpierw i majstruję z proof-of-concept przed rozpoczęciem projektu w pracy.Kod EF5 Najpierw - zmiana typu kolumnowego z migracjami
ja początkowo stworzył model, który wyglądał mniej więcej tak
public class Person {
public int Id { get; set; }
public string FirstName { get; set;}
public string Surname {get;set;}
public string Location {get;set;}
}
I dodałem kilka rekordów przy użyciu trochę aplikacji MVC Wsadziłem na górze.
Teraz chcę zmienić kolumnę lokalizacji do wyliczenia, coś jak:
public class Person {
public int Id { get; set; }
public string FirstName { get; set;}
public string Surname {get;set;}
public Locations Location {get;set;}
}
public enum Locations {
London = 1,
Edinburgh = 2,
Cardiff = 3
}
Kiedy dodać nową migrację uzyskać:
AlterColumn("dbo.People", "Location", c => c.Int(nullable: false));
ale kiedy uruchomić update-bazy danych I uzyskać błąd
Conversion failed when converting the nvarchar value 'London' to data type int.
Czy istnieje sposób migracji do obcinania tabeli przed uruchomieniem instrukcji alter ?
Wiem, że mogę otworzyć bazę danych i ręcznie to zrobić, ale czy istnieje mądrzejszy sposób?
Sugeruję dla programistów w podobnej sytuacji, że oni sprawdzić, czy konwersja jest wykonywana automatycznie przez Entity Framework przed wykonaniem niektórych odpowiedziach na tej stronie. Na przykład, znalazłem, że obsługuje konwersję między ciągiem znaków i dziesiętne iz powrotem bez mojej pomocy - migracji, że generowane przez Add-Migration działa dobrze. Oczywiście, spróbuj go w lokalnej/testowej bazie danych przed zastosowaniem do produkcji! – pipedreambomb