C# EF Core中存在单边一对一关系和级联删除问题
我的总体数据结构是:C# EF Core中存在单边一对一关系和级联删除问题,c#,entity-framework,asp.net-core,entity-framework-core,C#,Entity Framework,Asp.net Core,Entity Framework Core,我的总体数据结构是: Story |— VotesPool | \— Votes[] |— ShelfStoriers[] |— StoryTags[] \— Chapters[] \— CommentsThread \— Comments[] 删除是通过简单的\u context.Stories.Remove(Story)完成的,没有什么特别之处 当一个故事被删除时,章节s也会被删除,故事标签s和搁置库s也会被删除,但除了此结构之外,没有其他内容,包括章节的从属内容。数据
Story
|— VotesPool
| \— Votes[]
|— ShelfStoriers[]
|— StoryTags[]
\— Chapters[]
\— CommentsThread
\— Comments[]
删除是通过简单的\u context.Stories.Remove(Story)
完成的,没有什么特别之处
当一个故事
被删除时,章节
s也会被删除,故事标签
s和搁置库
s也会被删除,但除了此结构之外,没有其他内容,包括章节
的从属内容。数据库中充满了孤儿
这两个遗留问题(Story.VotesPool
和Chapter.CommentsThread
)的共同点是,它们都是一对一的关系,引用只保留在父对象上,例如
课堂故事{
公共int Id{get;set;}
公共VotesPool投票{get;set;}
}
课堂评论{
公共int Id{get;set;}
公共VotesPool投票{get;set;}
}
类VotesPool{
公共int Id{get;set;}
公共IEnumerable投票{get;set;}
}
而不是我认为正确的设置方式:
课堂故事{
公共int Id{get;set;}
公共VotesPool投票{get;set;}
}
课堂评论{
公共int Id{get;set;}
公共VotesPool投票{get;set;}
}
类VotesPool{
公共int Id{get;set;}
公共IEnumerable投票{get;set;}
公共故事?故事{get;set;}
公共注释?注释{get;set}
}
但这个解决方案并不适合我,原因有两个:
VotesPool
和CommentsThread
都是一种暂时的连接表,它们不是直接相关的。因此,提及父母似乎有点毫无意义VotesPool
和CommentsThread
模型。如果我想将CommentsThread
添加到Story
,我还必须将Story
添加到CommentsThread