EF - Каскадное удаление не работает, не удается удалить объект

Я получаю эту ошибку:

System.Data.SqlClient.SqlException Оператор DELETE конфликтует с ограничением REFERENCE »Комментарии FK_ _postId__164452B1 ". Конфликт произошел в базе данных "awe", таблица "dbo.comments", столбец "postId". Заявление было прекращено.

У меня есть такая структура:

    public class Post
    {
        public long Id { get; set; }
        public string Body { get; set; }     

        public long? ParentId { get; set; }
        public virtual Post Parent { get; set; }
        public virtual ICollection<Post> Posts { get; set; }

        public virtual ICollection<Comment> Comments { get; set; }
    }

    public class Comment
    {
        public long Id { get; set; }
        public long PostId { get; set; }
        public virtual Post Post { get; set; }
        public string Body { get; set; }
    }

мой метод удаления:

    public void Delete(long id)
    {
        var p = context.Set<Post>().Get(id);
        if(p == null) throw new MyEx("this post doesn't exist");
        if (p.Posts.Count > 0) throw new MyEx("this post has children and it cannot be  deleted");
        context.Set<Post>().Remove(p);
        context.SaveChanges();
    }

мой DbContext:

public class Db : DbContext
{
    public DbSet<Post> Posts { get; set; }
    public DbSet<Comment> Comments { get; set; }
}
6
задан Omu 26 September 2011 в 18:09
поделиться