14

ı bu iki çok temel varlıkları var diyelim: Bazı nedenlerden dolayıEF4.1 Kod İlk: bağımlı bir varlık navigasyon özelliği olmayan bir ilişki için silme basamaklarını nasıl devre dışı bırakılır

public class ParentEntity 
{ 
    public int Id; 
    public virtual ICollection<ChildEntity> Childrens; 
} 

public class ChildEntity 
{ 
    public int Id; 
    public int ParentEntityId; // Foreign Key 
    public virtual ParentEntity parent; // [NOTWANTED] 
} 

, ben istemiyorum ChildEntity, bir başvuruyu ebeveynine geri gönderir. Sadece ParentEntity kimliğini saklamak istiyorum ama daha fazla bir şey. Şimdiye kadar, sorun değil, sadece [NOTUANTED] satırı siliyorum ve her şey beklendiği gibi çalışıyor.

Sorunum şudur: bu özel durumdaki basamaklı silme nasıl devre dışı bırakılır?

Hala ebeveyn navigasyon özelliği o kadar kolay olacaktır olsaydı: (Ben silme üzerine basamaklarını devre dışı bırakmak için elde edebilirsiniz nasıl hiçbir fikrim yok navigasyon özelliği olmadan Ancak

modelBuilder.Entity<ChildEntity>() 
    .HasRequired(c => c.parent) 
    .WithMany(p => p.Childrens) 
    .WillCascadeOndelete(false) 

küresel devre dışı bırakmadan tabiki, ne de tabana göre, ancak sadece ilişki için). Şu anda ne yaptım

silme üzerinde basamaklarını devre dışı bırakmak için, null bir int olarak yabancı anahtarı ayarlamak, ama bu hoş değil:

public int? ParentEntityId; // Foreign Key - nullable just to disable cascade on delete 

Ben çalışmak için nasıl alabilirim akıcı API? Bunun mümkün olabileceğini düşünün.

+0

Eğer .hasOne (ParentEntity) – Saeid

cevap

17

Sen dernek diğer taraftan yapılandırmanız gerekir:

modelBuilder.Entity<ParentEntity>() 
    .HasMany(p => p.Children) 
    .WithRequired() 
    .HasForeignKey(c => c.ParentEntityId) 
    .WillCascadeOnDelete(false); 
+1

Woooo gerekiyor! Çok hoş, çok teşekkürler :) – darkey

+0

Değiştirmek zorundaydım .WithRequired() - .WithRequired (c => c.ParentEntity) – Mason240

+0

Çocuğunuzdan üst öğeye bir gezinme özelliği varsa, bu durumda kaskatı yapılandırabilirsiniz. çocuk haritalaması. –