首先使用 EF 代码,我们有一个 db 播种框架,它使用依赖注入的 Db 初始化程序和播种器来使用示例测试数据填充 dev db。
其中一些播种操作需要导入大量数据,因此对于几个表,我们使用带有 INSERT 语句的实际 SQL 文件。对于其中一些插入语句,必须禁用外键然后重新启用:
ALTER TABLE [Schema].[TableName] NOCHECK CONSTRAINT [TableName_FkPropertyName]
-- perform a block of inserts
ALTER TABLE [Schema].[TableName] CHECK CONSTRAINT [TableName_FkPropertyName]
我刚刚从 EF 4.2 更新到 EF 4.3 并注意到这些不再起作用。对 EF 创建的数据库的检查表明,FK 现在的命名不同:
FK_CodeFolder1.Table1Name_CodeFolder2.Table2Name_DbFkColumnName
有什么办法可以删除这个命名约定并回到原来的?如果不是,这怎么不是已知问题或重大变化?
拉迪斯拉夫回复后更新
Ladislav 是对的,我上面对新命名模式的解释不太正确。我已经更新了它。前面的部分。不是完整的命名空间,而是实体模型项目中一个文件夹的名称。因此,如果我在文件夹 AggregateSet1 中有一个实体 WidgetAbc,则 fk 模式片段将是AggregateSet1.WidgetAbc
,而不仅仅是WidgetAbc
.