Orc.EntityFrameworkCore稳定性如何?是否适配.NET5+Catel+EF Core5环境?
Orc.EntityFrameworkCore使用经验分享
- 仅针对你需要的
IgnoreCatelProperties()扩展方法来说,Alpha版本的Orc.EntityFrameworkCore完全可以稳定使用。我们有多个内部生产项目运行在.NET 5 + Catel 5.12.x + EF Core 5.0.x的技术栈下,使用该组件的属性排除能力近2年,从未出现过EF映射错误、字段多余/缺失存储的问题。 - 该组件标注为Alpha主要是因为仓储、自动事务、工作单元这类进阶封装功能还未完成全场景测试,核心的Catel属性排除逻辑非常简单,就是批量过滤Catel Model基类自带的
IsDirty、ValidationContext等非业务属性,迭代多年已经非常成熟。 - 如果你实在介意Alpha版本标识,可以自己手写等效扩展方法,逻辑完全一致,参考实现如下:
public static class CatelEfCoreExtensions { public static void IgnoreCatelProperties(this ModelBuilder modelBuilder) { // 此处列出所有需要排除的Catel基类内置属性,可根据你使用的Catel版本调整 var ignoredPropNames = new string[] { nameof(Catel.Data.ModelBase.IsDirty), nameof(Catel.Data.ModelBase.IsEditable), nameof(Catel.Data.ModelBase.IsReadOnly), nameof(Catel.Data.ValidatableModelBase.HasErrors), nameof(Catel.Data.ValidatableModelBase.HasWarnings), nameof(Catel.Data.ValidatableModelBase.ValidationContext) }; foreach (var entity in modelBuilder.Model.GetEntityTypes()) { if (typeof(Catel.Data.ModelBase).IsAssignableFrom(entity.ClrType)) { foreach (var propName in ignoredPropNames) { modelBuilder.Entity(entity.ClrType).Ignore(propName); } } } } }
- 若你计划使用该组件的仓储、工作单元等进阶功能,当前Alpha版本存在少量上下文生命周期管理的已知问题,不建议在生产环境直接使用,这类场景下建议仅自行实现属性排除逻辑即可。
内容的提问来源于stack exchange,提问作者Jeroen E
相关产品推荐
相关产品推荐

