实体框架上下文与ReflectionTypeLoadException失败

时间:2013-09-10 14:58:08

标签: c# entity-framework ef-code-first

我有一个简单的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。有谁知道如何让我的上下文与数据库交谈?

1 个答案:

答案 0 :(得分:0)

好的,发现了问题。

我使用ReSharper运行集成测试,它将程序集加载到临时位置,而Entity Framework无法计算出该位置的类型(当我从Console应用程序运行时它很好)。由于我不知道的原因,当我将上下文对象拆分为它们自己的程序集时,Entity Framework运行正常。因此,项目中的引用不存在问题,只是将这些引用加载到测试工具中时出现问题。