实体框架上下文失败,并出现 ReflectionTypeLoadException
本文关键字:ReflectionTypeLoadException 框架 上下文 失败 实体 | 更新日期: 2023-09-27 18:30:46
>我有一个简单的实体框架代码第一上下文,用于在事件从总线到达时持久化事件。上下文是:
public class MyContext : DbContext
{
public MyContext (DbConnection connection)
: base(connection, false)
{
Database.SetInitializer<MyContext>(null);
Configuration.AutoDetectChangesEnabled = true;
}
public DbSet<MyEvent> MyEvents { get; set; }
}
我的事件在哪里
public class MyEvent
{
public int Id { get; set; }
public string Source { get; set; }
public string MessageId { get; set; }
public DateTime EventDate { get; set; }
}
现在,当我尝试访问上下文时。MyEvents 集合 我得到一个 ReflectionTypeLoadException
无法加载一个或多个请求的类型。检索 LoaderExceptions 属性以获取更多信息。
与加载器异常
"程序集'YYYY'中类型'XXXX'中的方法'ToCombinedRows'没有实现。"
现在这真的很奇怪,因为类型 XXXX 与要持久化的对象完全无关,并且没有理由使用此名称的方法。
所有对象都在同一程序集中定义,并且我从一个集成测试项目运行,引用 CopyLocal 设置为 true。有谁知道如何让我的上下文与数据库对话?
好的,找到了问题。
我正在使用 ReSharper 运行集成测试,它将程序集加载到临时位置,实体框架无法计算出该位置的类型(当我从控制台应用程序运行时很好)。由于我不知道的原因,当我将上下文对象拆分为它们自己的程序集时,实体框架运行良好。因此,项目中的引用不是问题,只是将这些引用加载到测试工具中的问题。