Entity Developer 6.12的新版本主要侧重于基于用户反馈的 Entity Framework Core 支持改进。我们将继续研究这些功能,其中一些功能将来也可能会移植到其他 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 中可用。后者没有稳定版版本,并具有预览状态。Entity Developer 尚不支持与 Visual Studio 2022 的集成,因此现在它仅在独立版本和控制台版本中支持 EF Core 6 模型。
我们继续扩展 EF Core 模型支持的类型列表。之前的 Entity Developer 版本引入了对 IPAddress 和 PhysicalAddress 类型的支持。新的 6.12 版本将 Uri 添加到支持的类型列表(到其他类型部分)。EF Core 3、EF Core 5 和 EF Core 6 模型支持 Uri 类型。支持此类型的 EF Core 提供程序通常将其映射到数据库中的字符串数据类型(varchar、text 等)。
.NET 6 还引入了新的 DateOnly 和 TimeOnly 类型,它们在某些情况下比更通用的经典 DateTime 和 TimeSpan 类型更合适。一些 EF Core 6 提供程序开始支持这些类型,因此新的 Entity Developer 版本也支持它们。DateOnly 和 TimeOnly 类型现在在 Primitive Types 部分可用。
Entity Developer 中支持的类型列表随着时间的推移显着增加,但默认情况下,Property Editor 对话框中对应的 Type UI 列表的尺寸很小。其在新的 Entity Developer 版本中显著增加,使得选择属性类型更加方便。
选择属性类型
以前,模型连接字符串始终存储在模型文件之一中(特别是在 edps 文件中)。但是,在许多情况下,出于安全考虑,这种方法并不合适。这适用于模型存储在代码存储库(Git/Mercurial/SVN/等)中的情况,并且可以访问该存储库的人多于应该访问连接字符串的人。
以前,允许您限制模型中存储的敏感安全信息的唯一安全功能是 Persist Security Info 参数。如果设置为 False,则在保存模型时会从连接字符串中删除密码。这在很多情况下是不够的,因此新的 Entity Developer 版本提供了额外的安全功能。
现在您可以完全放弃将连接字符串保存在模型文件中。这提供了最高的安全性,但如果您需要经常连接到数据库(例如,将模型更改与数据库同步,反之亦然),则可能会过度且不方便。
这就是我们支持将连接字符串存储到 EF Core 模型的Entity Developer存储的原因。连接字符串仍然链接到模型,但单独存储在当前用户的 Entity Developer 设置目录中:
连接字符串存储在以下文件中:
作为替代方案,您还可以将连接字符串存储在当前用户的环境变量中。这种替代方法适用于许多情况,但并不普遍。它可能不适合连接字符串很长或用户已经有很多环境变量的情况。
存储模型连接字符串
至于我们对此功能的未来计划,我们正在考虑至少添加对 ASP.NET Core 用户机密功能的部分支持。此任务有其自身的复杂性,因为此功能仅适用于 .NET Core 应用程序并且与 Visual Studio 项目密切相关。
存储库和工作单元模板
存储库和工作单元模板为 EF Core 模型提供了新的“生成 UnitOfWork 存储库属性”属性(默认为 True)。
在此属性之前,生成的 IUnitOfWork 接口只有 Save() 方法,并且获取存储库(可以通过多种方式实现)必须由用户实现。
public partial interface IUnitOfWork : IDisposable
{
void Save();
}
现在,如果您将“Generate UnitOfWork Repository Properties”设置为 True,则 IUnitOfWork 接口提供对所有存储库的访问:
public partial interface IUnitOfWork : IDisposable
{
IRepository<Emp> Emps { get; }
IRepository<Dept> Depts { get; }
void Save();
}
数据传输对象模板
数据传输对象 (DTO) 模板现在具有适用于所有 ORM的新“验证框架”和“验证错误消息”属性。主要的 EF Core 模板之前就有它们,用于为模型类生成 DataAnnotation 属性。现在,您也可以轻松地为 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 模板可能会出现问题。
例如:
EF Core 模板为项目 A 生成所有内容。
数据传输对象模板为另一个不引用 A 的项目 B 生成 DTO 类。
数据传输对象模板为引用 A 和 B 的项目 C 生成 DTO 转换器类。
在这种情况下,需要为枚举指定输出。比如上面的例子,我们需要在一个新的项目D中生成enums,并在上面所有的项目中添加对它的引用。为此,我们 在 EF Core 模板中添加了新的 “Enum Output”属性,允许您为生成的枚举指定输出。
Entity Developer 的开发很大程度上基于我们用户的反馈。请不要犹豫,分享您的使用案例和建议,我们将尽力为您提供更好的用户体验。
京ICP备09015132号-996 | 网络文化经营许可证京网文[2017]4225-497号 | 违法和不良信息举报电话:4006561155
© Copyright 2000-2023 北京哲想软件有限公司版权所有 | 地址:北京市海淀区西三环北路50号豪柏大厦C2座11层1105室