为代码第一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
}
这里重要的一点是,我的like
对post
和comment
都有一个外键,因为每个帖子和评论都可以有自己的实例(喜欢帖子和喜欢评论)。
实体框架抱怨有多个级联路径,构建这些实体的正确方法是什么?
如果你删除一篇帖子,它会删除点赞和评论。您的点赞将删除评论。
多个级联路径,因为您要删除两次注释。
您可以先编辑生成的代码,然后将"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; }
}