繁体   English   中英

为代码优先 EF6 外键问题设置对象

[英]setting up objects for code first EF6 foreign key issue

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

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
}

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

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

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

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

您可以首先编辑生成的代码并将“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; }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM