You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用XAF DevExpress创建EF Core迁移时遇两类错误求助

解决XAF EF Core迁移报错的方案

针对第一个错误:字典键不存在

这个问题大概率是DevExpress BaseImpl.EFCore包与XAF核心包版本不匹配,或是Audit Trail模块的实体映射配置遗漏导致的,按以下步骤排查:

  • 全量检查所有DevExpress NuGet包(包括DevExpress.Persistent.BaseImpl.EFCore、DevExpress.ExpressApp.EFCore等),确保版本完全统一——哪怕是小版本号(比如22.1.4)也要一致,不能混合不同版本
  • 检查你的DbContext实现:必须继承XafDbContext,且OnModelCreating方法中先调用base.OnModelCreating(modelBuilder),同时显式注册Audit Trail相关实体:
    protected override void OnModelCreating(ModelBuilder modelBuilder) {
        base.OnModelCreating(modelBuilder);
        modelBuilder.UseChangeTrackingProxies();
        modelBuilder.UseObjectSpaceLinkProxies();
        // 注册Audit Trail实体
        modelBuilder.Entity<AuditDataItemPersistent>();
        modelBuilder.Entity<AuditDataPersistent>();
    }
    
  • 清理项目的bin、obj文件夹,重新生成解决方案后再执行Add-Migration InitialCreate

针对第二个错误:IXafDbContextFactory类型加载失败

这个错误是因为接口协变/逆变使用非法,本质是DbContext工厂的实现不符合XAF规范,解决步骤:

  • 检查你的DbContext工厂类,必须严格实现IXafDbContextFactory<T>,泛型参数只能是你的DbContext类型,不能加协变/逆变修饰符,正确示例:
    public class YourDbContextFactory : IXafDbContextFactory<YourDbContext> {
        public YourDbContext CreateDbContext(string connectionString) {
            var optionsBuilder = new DbContextOptionsBuilder<YourDbContext>();
            optionsBuilder.UseSqlServer(connectionString);
            return new YourDbContext(optionsBuilder.Options);
        }
    }
    
  • 再次确认所有DevExpress包版本完全一致,版本不兼容是这类加载错误的常见原因
  • 若升级包后出现问题,删除项目obj文件夹下的project.assets.json,重新还原NuGet包

额外排查点

  • 执行迁移命令时,Package Manager Console的默认项目必须选你的模块项目(而非Win/Web启动项目)
  • 若启用了Audit Trail模块,确保在模块的Setup方法中正确注册服务:
    public override void Setup(XafApplication application) {
        base.Setup(application);
        application.SetupComplete += (s, e) => {
            AuditTrailService.Instance.StartAudit(((XafApplication)s).ObjectSpaceProvider);
        };
    }
    

内容的提问来源于stack exchange,提问作者SrTemas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 00:01:40