Lamar构造函数选择配置失效问题排查求助
EF Core + Lamar 自定义组件配置问题
我有一个包含独立Migrations、DbContext和UnitOfWork的自定义组件,正尝试升级为使用EF Core与Lamar。
核心目标
- 未传入
DbContextOptions时,使用OnConfiguring中的默认配置; - 传入
DbContextOptions时,使用传入的配置并忽略OnConfiguring中的默认配置。
需求原因
- 允许用户配置自定义名称的连接字符串;
- 允许用户为单元测试配置内存数据库。
当前问题
尝试了三种方案,但均出现以下至少一种情况:
- Lamar不遵守构造函数选择的参数配置;
- Lamar传入自身的空
DbContextOptions,忽略我传入的配置。
已尝试的三种方案
方案1:使用SelectConstructor选项
- 控制台应用:默认构造函数被正常调用;
- 单元测试:两个构造函数均被调用,且
UseInMemoryDatabase配置被忽略。
方案2:使用Configure.Ctor选项
- 控制台应用:默认构造函数正常调用;
- 单元测试:仅默认构造函数被调用,
OnConfiguring中的默认配置被错误应用。
方案3:移除默认构造函数
- 控制台应用与单元测试:
DbContextOptions构造函数均被调用,但传入的选项为空。
更新说明
Lamar原作者给出了一些提示,我已调整配置(移除重复的WorkflowComponentDbContext注册,仅保留带SelectConstructor的注册),并移除了默认构造函数,但问题仍存在:Lamar无法保留我传入构造函数选择中的DbContextOptions参数。
内容的提问来源于stack exchange,提问作者Prisoner ZERO
相关产品推荐
相关产品推荐

