如何解决数据库中的循环依赖?

时间:2018-01-27 00:12:15

标签: database sql-server-2008 entity-framework-5

我的数据库中的两个表(Post和Thread)互相引用,它们被认为是SQL服务器不支持一对一关系的解决方案。见diagram 。我使key_post不接受我的第一个数据库中的空值,但这意味着我无法插入任何一个表,所以我必须使key_post可以为空至少能够在提交key_post字段之前创建线程,我可以设置如果我想删除该帖子,key_post为null,但我想找到一个不需要特别注意代码的解决方案,因为它可能会变得混乱。

1 个答案:

答案 0 :(得分:0)

除非一个为null,否则实体框架不会允许这种情况发生。那是因为它将首先插入一个并且在那里插入FK,它将失败。你可以像你一样做一个null并被强制这样做,或者你需要创建一个定义为的“ThreadPost”表:

ThreadPost

ThreadId (PK)
PostId (PK)

然后你从Thread中删除PostId中的ThreadId。从技术上讲,我相信如果您首先自动使用代码,EF将以这种方式设计表格。