Basamaklı silme yapmamanın olası nedeni, ilişkinizin isteğe bağlı olmasıdır. Örnek:
Bu modelde
public class Category
{
public int CategoryId { get; set; }
}
public class Product
{
public int ProductId { get; set; }
public Category Category { get; set; }
}
Eğer Kategori tablosuna bir yabancı anahtar vardır Ürün tablo alacağı ancak bu anahtar null ve hiçbir basamaklı varsayılan olarak veritabanında kurulumunu silmek yoktur. otomatik yapılandırılacaktır silmek basamaklı iki durumda da
modelBuilder.Entity<Product>()
.HasRequired(p => p.Category)
.WithMany();
:
Ek Açıklamalar:
public class Product
{
public int ProductId { get; set; }
[Required]
public Category Category { get; set; }
}
Akıcı API ilişki ardından gerekli olmasını istiyorsanız
iki seçeneğiniz var . Eğer isteğe bağlıdır ancak silmek kaskatlama İLE ilişki istiyorsanız
siz açık bir şekilde bu yapılandırmanız gerekir:
modelBuilder.Entity<Product>()
.HasOptional(p => p.Category)
.WithMany()
.WillCascadeOnDelete(true);
Edit: Geçen kodunda da basitçe .WillCascadeOnDelete()
yazabilir pasajı. Bu parametresiz aşırı yük, basamaklı silme ayarlamak için varsayılan olarak true
.
FK gerekli mi (non-null)
documentation
bu konuyu daha bakın? Bu durumda, cascade silmeleri "OneToManyCascadeDeleteConvention" tarafından oluşturulmalıdır. –
@Ladislav: Bu genel "varlık-çerçeve" etiketini kaldırmak güzel mi? Bu sorunun neden en sevdiğim etiketlerimin altındaki sorulardan aniden kaybolduğunu merak ediyordum. Şimdi varlık-çerçeve-4.1 've' varlık-çerçeve-4 've ... ve ...' yi ekledim, ancak şu anda tüm bu etiketleri kontrol etmek için biraz sarsılmış oluyor. Bir soru üzerinde giderek uzmanlaşmış bir etiketleme hiyerarşisine sahip olmanın daha iyi olamayacağından emin değilim. Daha az okuyucunun soruları sadece soruların ilgisi olmayan çok özel etiketlerle görebileceği bir risk görüyorum. – Slauma
@Slauma: Hem katılıyorum hem de EF 4 ve EF 4.1 etiketlerini kapatma konusunda ısrar edeceğiz ve sadece EF etiketini kullanacağız (ki bu doğru bir şeydir) veya içeriğine bağlı olarak soruları etiketleyeceğiz. Bu konu hakkında meta ile ilgili soruyu yakında açacağım, çünkü EF etiketleriyle ilgili daha fazla sorun var. –