Código do Entity Framework (EF) Primeira Exclusão em Cascata para um Relacionamento Um a Zero ou Um

Seguindo a seção "Code First Modeling" doCurso "Introdução ao Entity Framework 5" da Pluralsight por Julie Lerman, Eu criei duas classes POCO com umum a zero ou um relacionamento: um pai (Usuário) e umopcional filho (UserDetail).

Diagrama do modelo de dados User e UserDetail (clique para visualizar).

Observe no diagrama quea propriedade UserId é uma chave primária e uma chave estrangeira para UserDetail.

Código relevante:

public class User
{
    //...

    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }

    /* Has a 1:0..1 relationship with UserDetail */
    public virtual UserDetail UserDetail { get; set; }

    //...
}

public class UserDetail
{
    //...

    /* Has a 0..1:1 relationship with User */
    public virtual User User { get; set; }

    [Key, ForeignKey("User")]
    public int UserId { get; set; }

    //...
}

public class EFDbContext : DbContext
{
    public DbSet<User> Users { get; set; }
    //public DbSet<UserDetail> UserDetails { get; set; }  /* Explicit declaration not necessary. Context is aware of UserDetail entity due to 0..1:1 relationship with User */

    public EFDbContext()
    {
        Configuration.ProxyCreationEnabled = true;
        Configuration.LazyLoadingEnabled = true;
    }
}

public class UserRepository : IUserRepository
{
    private EFDbContext _context = new EFDbContext();

    public void Delete(User entity)
    {
        entity = _context.Users.Find(entity.UserId);

        //...

        _context.Users.Remove(entity);
        _context.SaveChanges();

        //...
    }
}

Quando o método Delete () na classe UserRepository é chamado, ele não exclui o registro do usuário no banco de dados porque a chave estrangeira em UserDetail não tem a exclusão em cascata ativada.

A instrução DELETE entrou em conflito com a restrição REFERENCE "FK_dbo.UserDetail_dbo.User_UserId".

Como você ativaria as exclusões em cascata pararelações de um para zero ou um usando primeiro o código do Entity Framework (para que a exclusão de um usuário exclua automaticamente o UserDetail)?

questionAnswers(3)

yourAnswerToTheQuestion