簡體   English   中英

如何首先使用數據庫自​​定義EF Core中的實體名稱大小寫

[英]How to customise entity name casing in EF Core with database first

我有一個現有的EF6代碼庫,我正在嘗試將其移植到EF Core ,並且我有一個我無法刪除/修改的現有數據庫。 所以我使用以下命令從我的數據庫中構建實體類

Scaffold-DbContext "MyConnectionString" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

它確實生成DbContext和必要的實體。 現在,似乎他們已經改變了命名約定(如何命名實體,屬性和導航)A LOT和新創建的實體與我現有的實體非常不同! 我找不到自定義這些約定的方法,所以我不得不在很多地方手動更改代碼! (傷心!)

其中一個變化是:現在EF不會從表名中單個化類名。 例如,如果表名是'附件',早期的實體類曾經是'附件',現在它是'附件'!

為了解決這個問題,我使用了IPluralizer接口,並使用Humanizer庫對實體類名稱進行Singularize。

當我使用Humanizer庫時,它Humanizer

"Accessories".Singularize(); //produces "Accessory"
"XMLDetails".Singularize(); //produces "XMLDetail"

但是,在EF Core創建的最終實體類中,第二個屬性名稱變為Xmldetail忽略原始大小寫! 有沒有辦法通過EF Core腳手架保留原始套管?

注意:我正在使用Microsoft.EntityFrameworkCore.SqlServer版本2.0.1以及面向.NET Standard 2.0類庫。

我不確定這一點。

其中一個變化是:現在EF不會從表名中單個化類名。 例如,如果表名是'附件',早期的實體類曾經是'附件',現在它是'附件'!

到目前為止我所知道的,將EF連接到DB時有一個選項。 它與早期版本的輸出相同。

像這樣: https//dotnetinterviewquestion.files.wordpress.com/2013/10/ut.png

經過一些研究后,我從GitHub社區了解到,這是EF Core 2.0一個已知問題 ,它已經在回購中得到修復 該修復程序計划與EF Core 2.1一起發布。

一旦修復程序發布,您可以使用--use-database-names標志告訴EF完全根據數據庫名稱生成名稱,如下所示

Scaffold-DbContext "ConnString" Microsoft.EntityFrameworkCore.SqlServer -o Models --use-database-names

在此之前,您可以嘗試以下工具之一,它提供比默認EF Core工具更多/更好的選項(我還沒有實際使用它們)

  1. EF核心電動工具
  2. 的EntityFramework-反向POCO-代碼優先發電機

暫無
暫無

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

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