为代码第一EF6外键问题设置对象

本文关键字:问题 设置 对象 EF6 代码 | 更新日期: 2023-09-27 18:00:00

我有以下模型(伪代码):

Post {
 int id
 List<Like> likes
 List<Comment> comments
}
Comment {
 int id
 List<Like> likes
 int PostId -- FK to Post
 Post Post
}
Like {
 int id
 int CommentId -- FK to Comment
 Comment Comment
 int PostId -- FK to Post
 Post Post
}

这里重要的一点是,我的likepostcomment都有一个外键,因为每个帖子和评论都可以有自己的实例(喜欢帖子和喜欢评论)。

实体框架抱怨有多个级联路径,构建这些实体的正确方法是什么?

为代码第一EF6外键问题设置对象

如果你删除一篇帖子,它会删除点赞和评论。您的点赞将删除评论。

多个级联路径,因为您要删除两次注释。

您可以先编辑生成的代码,然后将"cascadeDelete:true"更改为false,也可以修复您的类。

你应该上LikeComment课程。

public class Comment
{
    public int Id { get; set; }
    public List<CommentLike> Likes { get; set; }
    public int PostId { get; set; }
    public Comment()
    {
        Likes = new List<CommentLike>();
    }
}
public class Like
{
    public int Id { get; set; }
}
public class Post
{
    public int Id { get; set; }
    public List<PostLike> Likes { get; set; }
    public List<PostComment> Comments { get; set; }
    public Post()
    {
        Likes = new List<PostLike>();
        Comments = new List<PostComment>();
    }
}

public class PostComment : Comment
{
    public int PostId { get; set; }
    [ForeignKey("PostId")]
    public virtual Post Post { get; set; }
}
public class LikeComment : Comment
{
    public int LikeId { get; set; }
    [ForeignKey("LikeId")]
    public virtual Like Like { get; set; }
}

public class PostLike : Like
{
    public int PostId { get; set; }
    [ForeignKey("PostId")]
    public virtual Post Post { get; set; }
}
public class CommentLike : Like
{
    public int CommentId { get; set; }
    [ForeignKey("CommentId")]
    public virtual Comment Comment { get; set; }
}