Entity Developer 6.12的新版本主要側重于基于用戶反饋的 Entity Framework Core 支持改進。我們將繼續(xù)研究這些功能,其中一些功能將來也可能會移植到其他 ORM 中。
以前,EF Core 6 在其第一個預覽版本中同時支持 .NET 5 和 .NET 6。以前的 Entity Developer 版本支持 EF Core 6,您可以在集成到 Visual Studio 2019 預覽版的 Entity Developer 以及獨立版本和控制臺版本中設計 EF Core 6 模型。
目前 EF Core 6 已停止支持 .NET 5,僅支持 .NET 6。.NET 6 支持也已從 Visual Studio 2019 預覽版中刪除,目前僅在 Visual Studio 2022 中可用。后者沒有穩(wěn)定版版本,并具有預覽狀態(tài)。Entity Developer 尚不支持與 Visual Studio 2022 的集成,因此現(xiàn)在它僅在獨立版本和控制臺版本中支持 EF Core 6 模型。
我們繼續(xù)擴展 EF Core 模型支持的類型列表。之前的 Entity Developer 版本引入了對 IPAddress 和 PhysicalAddress 類型的支持。新的 6.12 版本將 Uri 添加到支持的類型列表(到其他類型部分)。EF Core 3、EF Core 5 和 EF Core 6 模型支持 Uri 類型。支持此類型的 EF Core 提供程序通常將其映射到數(shù)據(jù)庫中的字符串數(shù)據(jù)類型(varchar、text 等)。
.NET 6 還引入了新的 DateOnly 和 TimeOnly 類型,它們在某些情況下比更通用的經(jīng)典 DateTime 和 TimeSpan 類型更合適。一些 EF Core 6 提供程序開始支持這些類型,因此新的 Entity Developer 版本也支持它們。DateOnly 和 TimeOnly 類型現(xiàn)在在 Primitive Types 部分可用。
Entity Developer 中支持的類型列表隨著時間的推移顯著增加,但默認情況下,Property Editor 對話框中對應的 Type UI 列表的尺寸很小。其在新的 Entity Developer 版本中顯著增加,使得選擇屬性類型更加方便。
選擇屬性類型
以前,模型連接字符串始終存儲在模型文件之一中(特別是在 edps 文件中)。但是,在許多情況下,出于安全考慮,這種方法并不合適。這適用于模型存儲在代碼存儲庫(Git/Mercurial/SVN/等)中的情況,并且可以訪問該存儲庫的人多于應該訪問連接字符串的人。
以前,允許您限制模型中存儲的敏感安全信息的唯一安全功能是 Persist Security Info 參數(shù)。如果設置為 False,則在保存模型時會從連接字符串中刪除密碼。這在很多情況下是不夠的,因此新的 Entity Developer 版本提供了額外的安全功能。
現(xiàn)在您可以完全放棄將連接字符串保存在模型文件中。這提供了最高的安全性,但如果您需要經(jīng)常連接到數(shù)據(jù)庫(例如,將模型更改與數(shù)據(jù)庫同步,反之亦然),則可能會過度且不方便。
這就是我們支持將連接字符串存儲到 EF Core 模型的Entity Developer存儲的原因。連接字符串仍然鏈接到模型,但單獨存儲在當前用戶的 Entity Developer 設置目錄中:
連接字符串存儲在以下文件中:
作為替代方案,您還可以將連接字符串存儲在當前用戶的環(huán)境變量中。這種替代方法適用于許多情況,但并不普遍。它可能不適合連接字符串很長或用戶已經(jīng)有很多環(huán)境變量的情況。
存儲模型連接字符串
至于我們對此功能的未來計劃,我們正在考慮至少添加對 ASP.NET Core 用戶機密功能的部分支持。此任務有其自身的復雜性,因為此功能僅適用于 .NET Core 應用程序并且與 Visual Studio 項目密切相關。
存儲庫和工作單元模板
存儲庫和工作單元模板為 EF Core 模型提供了新的“生成 UnitOfWork 存儲庫屬性”屬性(默認為 True)。
在此屬性之前,生成的 IUnitOfWork 接口只有 Save() 方法,并且獲取存儲庫(可以通過多種方式實現(xiàn))必須由用戶實現(xiàn)。
public partial interface IUnitOfWork : IDisposable
{
void Save();
}
現(xiàn)在,如果您將“Generate UnitOfWork Repository Properties”設置為 True,則 IUnitOfWork 接口提供對所有存儲庫的訪問:
public partial interface IUnitOfWork : IDisposable
{
IRepository<Emp> Emps { get; }
IRepository<Dept> Depts { get; }
void Save();
}
數(shù)據(jù)傳輸對象模板
數(shù)據(jù)傳輸對象 (DTO) 模板現(xiàn)在具有適用于所有 ORM的新“驗證框架”和“驗證錯誤消息”屬性。主要的 EF Core 模板之前就有它們,用于為模型類生成 DataAnnotation 屬性?,F(xiàn)在,您也可以輕松地為 DTO 類生成它們。
public partial class DeptDto
{
[Key]
[Required()]
public int Deptno { get; set; }
[StringLength(14)]
public string Dname { get; set; }
[StringLength(13)]
public string Loc { get; set; }
public List<EmpDto> Emps { get; set; }
}
EF 核心模板
獨特的 EF Core 模型功能之一是支持在模型中定義的枚舉類型,并為它們生成代碼。但是,在某些情況下,將此類枚舉用作實體和 DTO 類的屬性類型時,如果將輸出生成到不同的項目,則 DTO 模板可能會出現(xiàn)問題。
例如:
EF Core 模板為項目 A 生成所有內容。
數(shù)據(jù)傳輸對象模板為另一個不引用 A 的項目 B 生成 DTO 類。
數(shù)據(jù)傳輸對象模板為引用 A 和 B 的項目 C 生成 DTO 轉換器類。
在這種情況下,需要為枚舉指定輸出。比如上面的例子,我們需要在一個新的項目D中生成enums,并在上面所有的項目中添加對它的引用。為此,我們 在 EF Core 模板中添加了新的 “Enum Output”屬性,允許您為生成的枚舉指定輸出。
Entity Developer 的開發(fā)很大程度上基于我們用戶的反饋。請不要猶豫,分享您的使用案例和建議,我們將盡力為您提供更好的用戶體驗。
京ICP備09015132號-996 | 違法和不良信息舉報電話:4006561155
© Copyright 2000-2026 北京哲想軟件有限公司版權所有 | 地址:北京市海淀區(qū)西三環(huán)北路50號豪柏大廈C2座11層1105室
北京哲想軟件集團旗下網(wǎng)站:哲想軟件 | 哲想動畫