我有一个简单的Entity Framework Code First上下文,用于在事件从总线到达时保持事件。背景是:
public class MyContext : DbContext
{
public MyContext (DbConnection connection)
: base(connection, false)
{
Database.SetInitializer<MyContext>(null);
Configuration.AutoDetectChangesEnabled = true;
}
public DbSet<MyEvent> MyEvents { get; set; }
}
MyEvent在哪里
public class MyEvent
{
public int Id { get; set; }
public string Source { get; set; }
public string MessageId { get; set; }
public DateTime EventDate { get; set; }
}
现在,当我尝试访问context.MyEvents集合时,我得到一个ReflectionTypeLoadException
无法加载一个或多个请求的类型。检索LoaderExceptions属性以获取更多信息。
使用LoaderException
来自程序集“YYYY”的“XXXX”类型中的“方法'ToCombinedRows'没有实现。”
现在这是真的奇怪,因为XXXX类型与持久化对象完全无关,并且没有理由拥有此名称的方法。
所有对象都在同一个程序集中定义,我从集成测试项目运行,并将引用CopyLocal设置为true。有谁知道如何让我的上下文与数据库交谈?
答案 0 :(得分:0)
好的,发现了问题。
我使用ReSharper运行集成测试,它将程序集加载到临时位置,而Entity Framework无法计算出该位置的类型(当我从Console应用程序运行时它很好)。由于我不知道的原因,当我将上下文对象拆分为它们自己的程序集时,Entity Framework运行正常。因此,项目中的引用不存在问题,只是将这些引用加载到测试工具中时出现问题。