2013-09-02 12 views
12

Najpierw używam kodu EF dla mojego projektu. Mam następujący kod w moim DataModelKod struktury encji, co powoduje, że kolumna nie nadaje się do null

Aby to nie-nullable usunąłem "?" i uruchomił polecenie Add-Migration z konsoli menedżera pakietów. następujący plik migracyjny został wygenerowany.

public partial class PasswordDate : DbMigration 
{ 
    public override void Up() 
    { 
     AlterColumn("dbo.CertificateInfoes", "PasswordDate", c => c.DateTime(nullable: false)); 
    } 

    public override void Down() 
    { 
     AlterColumn("dbo.CertificateInfoes", "PasswordDate", c => c.DateTime()); 
    } 
} 

Ale gdy uruchamiam polecenie Update Database:

Update-Database -SourceMigration 201309020721215_PasswordDate 

mi się następujący błąd: Nie można wstawić wartość NULL w kolumnie 'PasswordDate', stół ''; kolumna nie zezwala na wartości null. AKTUALIZACJA nie działa. Oświadczenie zostało wypowiedziane.

Uprzejmie sugerujemy rozwiązania.

Odpowiedz

10

Wynika to z tego, że w tej kolumnie zostały podane wartości NULL, a następnie podjęto próbę uczynienia go nie-nullable. Następnie spróbuje przeprowadzić migrację istniejących danych do tej nowej nie-zerowalnej kolumny, która zostanie przerwana, ponieważ masz już tam wartości NULL.

dwa rozwiązania:

1) Zmień go z powrotem do pustych
2) Daj mu wartość domyślną dla pozycji, które nie mają wartości.

+0

Nie mogę zmienić tego z powrotem na zerowalny. dla drugiej opcji jak zdefiniować wartości domyślne? Czy muszę to zrobić w pliku Migration lub muszę dodać to w moim datamodelu? – HBhatia

+0

@HardikBhatia Następnie podaj swojej kolumnie wartość domyślną, w przeciwnym razie będziesz musiał przechodzić przez osobne rekordy i aktualizować je. – mattytommo

+1

Zmodyfikowałem już tabelę i upewniłem się, że moja kolumna PasswordDate nie ma wartości null w bazie danych. – HBhatia

Powiązane problemy