CodeFirst – ForeignKey Uyarısı

Merhaba,

Entity’lerinizi yazarken tablolar arasında birden fazla bağlantı olduğunda yada entity sınıfınızın hem foreign key alıyor ve hem id’sini veriyorsa başka bir sınıfa,yani bire çok (one-to-many) veya çoklu (many-to-many) tasarıma sahipse; package manager console’da update-database komutunuz sonrası aşağıdaki gibi bir uyarıyı görürüz.

Introducing FOREIGN KEY constraint 'FK_dbo.XXXX_dbo.YYYY_UserID' 
on table 'XXXX' may cause cycles or multiple cascade paths. 
Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other 
FOREIGN KEY constraints.
Could not create constraint or index. See previous errors.

 

Bu uyarıyı geçebilmek için bire çok bir tasarımsa OneToManyCascadeDeleteConvention  sınıfını, çoklu tasarımsa ManyToManyCascadeDeleteConvention sınıfını Context sınıfımız içerisinde OnModelCreating metotumuzda kullanıyoruz.

Entity Framework ile çalışıyorsak;

modelBuilder.Conventions.Remove(&ltOneToManyCascadeDeleteConvention&gt);

 

Fluent Api Orm ile çalışıyorsak ;

modelBuilder.Entity(TabloAdı).HasMany(i => i.UserID).WithRequired().WillCascadeOnDelete(false);

 

bu sınıflar bize çoklu ilişki içindeki tablolarda cascade silme işlemi için sıralı bir şekilde silmeye izin verir. Biz ise bu gerekliliği modelimizden kaldırarak tablolarımızın sql server’da oluşmasına izin vermiş oluyoruz.

 

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s