关于在数据库层上强制执行的实体/表关系和外键,我在业务层和数据层之间的概念兼容性方面存在问题。
我正在使用 CodeFluent MySql Producer,但我相信其他 Db 生产者的行为也是相同的。
该问题涉及实体之间的一对多简单关系,这些关系作为 INT 数据类型字段映射到数据库,并强制执行适当的外键。
我遇到的问题是:在.NET 的业务层上,实体的“链接”属性被映射为整数类型,默认值为-1(减一)。
这意味着,当两个实体的链接信息为 NON-EXISTENT(非必需)时,业务层将 -1 作为链接属性的内容,并且该内容 -1 也被持久化到数据库中对应表上的字段。
这就是我需要理解的问题。当我在数据库中有 -1 作为内容时,关联的外键是不相关的/不兼容的。这应该在数据库端设置为 NULL,而不是 -1。关系的 OTHER 目标表的任何行中都没有 -1 内容作为主键。
我遇到的一个实际困难是:我不能在填充了 codefluent 生成的应用程序的数据库之间使用数据同步脚本,因为在数据同步脚本的开头删除外键后,我以后无法重新创建它们,因为所有-1s(减号)代替 NULL,作为表示 2 个表之间关系的字段中不存在信息的规则存在...
你能帮我理解和解决这个问题吗?
谢谢