2015-12-02 7 views
4

У меня есть два объекта. Profile и ProfileImages. После извлечения Profile я хочу удалить ProfileImages через Profile без его удаления ссылки на Profile (установка его на null). Как это можно сделать с помощью свободного API и Cascading Delete? Установить атрибут HasRequired или атрибут CascadeDelete?Каскад удалить с использованием Fluent API

public class Profile 
{ 
    //other code here for entity 
    public virtual ICollection<ProfileImage> ProfileImages { get; set; } 
} 

public class ProfileImage 
{ 
    // other code here left out   
    [Index] 
    public string ProfileRefId { get; set; } 

    [ForeignKey("ProfileRefId")] 
    public virtual Profile Profile { get; set; } 
} 

ответ

3

Вы можете добавить это к вашему DB Context:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Profile>() 
    .HasOptional(c => c.ProfileImages) 
    .WithOptionalDependent() 
    .WillCascadeOnDelete(true); 
} 

Подробнее здесь: Enabling Cascade Delete

Вы можете настроить каскадное удаление в связи с использованием метода WillCascadeOnDelete . Если внешний ключ зависимого объекта не имеет значения NULL, то Code First устанавливает каскадное удаление в отношении . Если внешний ключ на зависимом объекте является нулевым, Code First не устанавливает каскадное удаление в отношении, а когда исключается основной, внешний ключ будет иметь значение null.

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

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