14

Допустим, у меня есть эти два очень основные сущности:EF4.1 Code First: Как отключить удаление каскада для отношений без навигации собственности в зависимой сущности

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] 
} 

По некоторым причинам, я не хочу, ChildEntity, чтобы вернуть ссылку на родителя. Я просто хочу, чтобы он сохранил идентификатор ParentEntity, но не более того. До сих пор никаких проблем, я просто удаляю строку [NOTWANTED], и все работает так, как ожидалось.

Моя проблема здесь: как отключить каскадное удаление в этом конкретном случае?

Если бы я все еще был родительский навигационный свойство было бы так же легко, как:

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

Однако без свойства навигации я понятия не имею, как я могу добиться, чтобы отключить каскад на удаление (без отключения его глобально конечно, ни за столом, а только для отношения).

То, что я сделал прямо сейчас, чтобы установить внешний ключ в качестве обнуляемого междунар для того, чтобы отключить каскад на удаление, но это не очень:

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

Как я могу заставить его работать с свободный API? Думайте, что это должно быть возможно.

+0

вам нужно .hasOne (ParentEntity) – Saeid

ответ

17

Вы должны настроить его с другой стороны ассоциации:

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

Woooo! Это хорошо, спасибо большое :) – darkey

+0

Мне пришлось изменить .WithRequired() на .WithRequired (c => c.ParentEntity) – Mason240

+0

Если у вас есть свойство навигации от дочернего к родительскому, тогда вы можете настроить каскад в отображение ребенка. –

 Смежные вопросы

  • Нет связанных вопросов^_^