我有以下模型(伪代码):
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
有post
和comment
的外键,因为每个帖子和评论都有自己的实例(喜欢帖子和喜欢的帖子)评论)。
实体框架抱怨多个级联路径,构建这些实体的正确方法是什么?
答案 0 :(得分:1)
如果删除帖子,它会删除喜欢和评论。 您的喜欢会删除评论。
多个级联路径,因为您要删除两次注释。
您可以编辑生成的代码第一个代码并更改&#34; cascadeDelete:true&#34;为假或你可以修理你的课程。
你应该有一个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; }
}