2013-09-02 18 views
12

Projem için önce EF kodunu kullanıyorum. VeriModelVarlık Çerçeve Kodu ilk olarak bir sütun oluşturulamıyor null

'mdaki kodu takip etmem gerekirse, bu işlemi yapılabilmesi için '?' Paket yöneticisi konsolundan Add-Migration komutunu çalıştırdım. taşıma dosyası oluşturuldu.

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()); 
    } 
} 

Ama Güncelleme-Veritabanı komutu çalıştırdığınızda: Ben hata aşağıdaki almak

Update-Database -SourceMigration 201309020721215_PasswordDate 

: Sütun 'PasswordDate' tablo '' NULL değeri eklenemiyor; sütun, boş değerlere izin vermiyor. UPDATE başarısız. Deyim sonlandırıldı.

Lütfen çözümleri öneriniz.

cevap

10

Çünkü bu sütunda NULL değerlerine izin verdiniz, ardından onu null olmayan şekilde yapmaya çalıştınız. Daha sonra, mevcut verilerinizi şu anda yeniden oluşturulamayan yeni sütuna geçirmeye çalışacaktır. Bu, daha önce NULL değerlerine sahip olduğunuz için kesintiye uğrayacaktır.

İki çözümleri:

1))
2 null it a değeri olmayan maddeler için varsayılan bir değer verin geri değiştirin.

+0

Onu yeniden null olarak değiştiremiyorum. ikinci seçenek için varsayılan değerleri nasıl tanımlayabilirim? Bunu Göçmen dosyasında mı yapmam gerekiyor yoksa bunu veri modelimde eklemem gerekiyor mu? – HBhatia

+0

@HardikBhatia Ardından sütunu Varsayılan bir tarih değeri verin, aksi takdirde boştaki kayıtları tek tek gözden geçirip güncellemeniz gerekir. – mattytommo

+1

Tabloyu zaten değiştirdim ve PasswordDate sütununun veritabanında boş olmadığından emin oldum. – HBhatia

İlgili konular