10

Używam Entity Framework 4.3 Code First i wypróbowanie funkcji Migrations.Jak wpływać na kolejność kolumn z Entity Framework Code First Migrations

Jeśli dodać nową właściwość do mojej klasy, a następnie uruchomić Add-migracja z okna konsoli menedżera pakietów mam coś takiego:

public override void Up() 
    { 
     AddColumn("Products", "Discontinued", c => c.Boolean(nullable: false)); 
    } 

Chciałbym być w stanie wpłynąć na porządku kolumna, ponieważ nie chcę, aby była dołączana do tabeli, ale raczej do określonego indeksu. Myślałem, że będę mógł dodać go do mojej konfiguracji ModelBuilder, coś jak:

Property(p => p.Discontinued).HasColumnOrder(2); 

ale działa update-baza nie wydaje się go używać. Czy można to zrobić jako migrację?

+0

a) Nie ma sposobu, aby wstawić do poprzednich kolumnach nie robiąc dużo hacking, b) nie powinno być zachowaniem przestarzałe dane w bazie danych za pomocą "miękkiego usuwania" - sprawdź archiwizację wycofanych danych. –

+0

Jaki jest sens posiadania kolumn w tabeli bazy danych w określonej kolejności? To tylko magazyn danych. –

+1

Tylko dla celów estetycznych, to wszystko. Możesz określić, kiedy baza danych zostanie utworzona za pomocą narzędzia do tworzenia modeli, więc zastanawiałeś się, czy jest to możliwe podczas dodawania nowej kolumny jako części migracji. Nie ma sprawy. – SteveB

Odpowiedz

5

Jest to tylko kwestia braku funkcjonalności. SQL sam w sobie nie polega na żadnej domyślnej kolejności kolumn (z pewnymi wyjątkami: ORDER BY, ...).

Ani SQL Server, ani ORACLE nie mają bezpośredniego polecenia SQL DDL (aka ALTER TABLE...), aby przenieść kolumnę.

Dlatego nie ma możliwości zmiany kolejności bez dużego wysiłku (odtworzenie tabeli). Patrz na przykład

Powiązane problemy