Код EF4.1 первый: как отключить каскад удаления для отношения без свойства навигации в зависимом объекте
Допустим, у меня есть эти две очень простые сущности:
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? Думаю, это должно быть возможно.