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