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

使用Effort内存数据库共享连接触发Index was not found异常如何解决

异常触发原因
  • Effort通过CreatePersistent创建的持久内存连接,元数据(表结构、索引、外键关联配置)会在第一次被DbContext访问时一次性初始化写入,后续无法自动合并其他上下文的模型结构。
  • 你代码中ReferenceDbContext先使用连接完成了元数据初始化,第二个结构不同的PersonDbContext复用同一个连接时,Effort会尝试将PersonDbContext的实体关联关系合并到已有的内存库结构中,当存在跨上下文外键关联或实体约束不匹配的情况时,Effort的反射逻辑找不到对应依赖的索引,就会抛出Index was not found异常。
解决办法
  • 方案1:若需要跨上下文共享内存库数据,将两个上下文的实体定义合并到同一个DbContext中,避免多上下文复用连接。
  • 方案2:若必须拆分多上下文,在初始化第二个上下文前关闭EF的数据库初始化策略,避免触发元数据合并逻辑,示例代码如下:
// 禁用PersonDbContext的自动初始化逻辑
Database.SetInitializer<PersonDbContext>(null);
personDbContext = new PersonDbContext(connection);
  • 方案3:若不需要跨上下文共享数据,为每个DbContext单独创建Effort连接即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:36:05