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