0

首先使用EF代碼,我們有一個db seeding框架,它使用依賴注入的db初始化程序和播種器向開發數據庫填充樣本測試數據。有沒有辦法撤銷/刪除/回滾EF 4.3外鍵命名約定?

一些種子資金業務需要進口大量的數據,因此對於情侶對錶,我們用實際的SQL文件與INSERT語句。對於其中的一些INSERT語句,外鍵必須diabled然後重新啓用:

​​

我剛剛從EF 4.2更新到4.3 EF,發現這些不再起作用。由EF創建該數據庫的檢查表明,FK的現在名稱不同:

FK_CodeFolder1.Table1Name_CodeFolder2.Table2Name_DbFkColumnName 

有什麼辦法消除這種命名約定,回到原來的?如果沒有,這是不是known issue or breaking change?後

更新拉吉斯拉夫的回覆

拉吉斯拉夫是正確的,我的新的命名模式的上述解釋是不完全正確。我已經更新了它。前面的部分。不是完整的命名空間,但它是實體模型項目中文件夾的名稱。因此,如果我在文件夾AggregateSet1中有一個實體WidgetAbc,則fk模式片段將是AggregateSet1.WidgetAbc,而不僅僅是WidgetAbc

回答

1

您爲什麼認爲這是一個問題或突變?恕我直言,這是EF內部行爲 - 您首先使用代碼,並且在這種方法中,您不應該直接使用數據庫,特別是您不應該將自定義數據庫腳本基於硬編碼名稱,因爲您無法控制其代。

我不認爲你可以恢復行爲,但你可以開始使用遷移和編碼你的表定義 - AddForeignKey方法應該允許你命名你的FK約束。

Btw。我在EFv4.3中看到FK約束的不同命名模式:

FK_DependentTableName_PrincipalTableName_FKColumnName 
+0

我不得不不同意控制名稱生成。這個API可以讓你控制命名,包括SQL中可以實現的所有其他內容 - 模式名稱,表名,列名等。如果新命名約定至少已經發布,那將非常有用。我們很幸運,因爲大多數情況下,我們完全遵循您所說的 - 不會創建大量自定義SQL,如視圖,索引,sprocs等。我期待在新的遷移功能成熟時繼續使用,但仍然會想了解爲什麼改變這種命名模式是必要的。 – danludwig 2012-02-22 20:45:38

+0

如果你想知道模式改變的原因,你應該直接詢問ADO.NET團隊。 – 2012-02-22 20:55:19

+0

是否有任何官方信息FK命名更改?當您應用遷移時,這是一個突破性的變化,當在4.3版本中創建FK時,在4.3或更高版本中創建,刪除FK從數據庫模式中刪除! – vk5880 2016-04-29 20:24:16

相關問題