簡體   English   中英

實體框架5鍵名優先,代碼優先

[英]Entity Framework 5 Key naming with code first

當它們由Add-Migration生成時,我的鍵名(索引,主鍵和外鍵)中不能包含[。](句點),因此我嘗試編寫CSharpMigrationCodeGenerator,但不幸的是,這似乎不允許您可以更改外鍵或索引名稱。 可以將主鍵名稱設置為覆蓋創建表的一部分:

protected override void Generate(
    CreateTableOperation createTableOperation, IndentedTextWriter writer)
    {
        createTableOperation.PrimaryKey.Name = "USE THIS NAME";
        base.Generate(createTableOperation, writer);
    }

但是我真正需要的是一種確保它剛剛刪除了句號(這意味着覆蓋了自定義名稱生成器)的方法-但是我看不到如何做到這一點。

您是否沒有嘗試過先使用電動工具追溯生成代碼?

它不僅會從數據庫為您生成代碼優先類,還可以自定義生成對象的T4模板,以便處理獨特的情況(例如,用於處理保留字符的自定義命名邏輯)。 我的entity.tt在每個生成的對象上方都有以下內容:-

[MetadataType(typeof(<#= efHost.EntityType.Name #>_Validation))]

這意味着我可以將所有數據驗證都放到一個單獨的類中,該類在重新創建對象時不會被覆蓋。

這個問題已不存在,在當時非常具體。 在過去的一年中,工具一直在發展,因此不再具有實際意義,因為您無需以這種方式解決問題。

非常感謝您的閱讀和評論

通過實體框架代碼的第一次遷移,您可以更改外鍵或索引名稱,您可以在此處的示例中看到: http: //msdn.microsoft.com/zh-cn/data/jj591621.aspx http:// www。 dotnetcurry.com/showarticle.aspx?ID=889

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM