0

关于在数据库层上强制执行的实体/表关系和外键,我在业务层和数据层之间的概念兼容性方面存在问题。

我正在使用 CodeFluent MySql Producer,但我相信其他 Db 生产者的行为也是相同的。

该问题涉及实体之间的一对多简单关系,这些关系作为 INT 数据类型字段映射到数据库,并强制执行适当的外键。

我遇到的问题是:在.NET 的业务层上,实体的“链接”属性被映射为整数类型,默认值为-1(减一)。

这意味着,当两个实体的链接信息为 NON-EXISTENT(非必需)时,业务层将 -1 作为链接属性的内容,并且该内容 -1 也被持久化到数据库中对应表上的字段。

这就是我需要理解的问题。当我在数据库中有 -1 作为内容时,关联的外键是不相关的/不兼容的。这应该在数据库端设置为 NULL,而不是 -1。关系的 OTHER 目标表的任何行中都没有 -1 内容作为主键。

我遇到的一个实际困难是:我不能在填充了 codefluent 生成的应用程序的数据库之间使用数据同步脚本,因为在数据同步脚本的开头删除外键后,我以后无法重新创建它们,因为所有-1s(减号)代替 NULL,作为表示 2 个表之间关系的字段中不存在信息的规则存在...

你能帮我理解和解决这个问题吗?

谢谢

4

1 回答 1

1

在使用时,您必须在配置文件(或)中MySql添加一个属性以默认值转换为:app.configweb.configNULL

<configSections>
  <section name="Sample" type="CodeFluent.Runtime.CodeFluentConfigurationSectionHandler, CodeFluent.Runtime" />
</configSections>
<Sample persistenceTypeName="MySQL"
        connectionString="..."
        mysql-useDefaultValue="true" />
于 2016-06-16T08:18:03.910 回答