0

我有一个简单的实体框架代码优先上下文,用于在事件从总线到达时持久化它们。上下文是:

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。有谁知道如何让我的上下文与数据库对话?

4

1 回答 1

0

好的,找到问题了。

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

于 2013-09-10T15:44:35.677 回答