Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 模拟DbContext条目_C#_Entity Framework_Testing - Fatal编程技术网

C# 模拟DbContext条目

C# 模拟DbContext条目,c#,entity-framework,testing,C#,Entity Framework,Testing,我正在测试一个包含以下代码的函数: void FunctionToTest() { if (context.Entry(entity).State == EntityState.Detached) { // [...] } // [...] } 出于这个原因,我创建了自己的测试上下文,该上下文运行良好,但我无法模拟DbEntityEntry条目(tenty实体),因为DbEntityEntry类有一个需要内部类的构造函数 有什么

我正在测试一个包含以下代码的函数:

void FunctionToTest() {
  if (context.Entry(entity).State == EntityState.Detached)
        {
            // [...]
        }

  // [...]
}
出于这个原因,我创建了自己的测试上下文,该上下文运行良好,但我无法模拟
DbEntityEntry条目(tenty实体)
,因为
DbEntityEntry
类有一个需要内部类的构造函数

有什么解决办法吗?

您可以使用。通过NuGet下载,将此代码添加到app.config

<system.data>
<DbProviderFactories>
  <add name="Effort.Provider" invariant="Effort.Provider" description="Effort.Provider" type="Effort.Provider.EffortProviderFactory,Effort" />
</DbProviderFactories>
</system.data><entityFramework>
<providers>
  <provider invariantName="Effort.Provider" type="Effort.Provider.EffortProviderServices, Effort" />
</providers>
</entityFramework>

瞧,你有一个用于测试目的的假数据库

你使用的是什么版本的EF?如果您使用EF Core,您可以使用InMemoryDatabaseProvider。是否有其他解决方案而不安装其他软件包?
EffortProviderConfiguration.RegisterProvider();
var connection = DbConnectionFactory.CreateTransient();
var model = new ApplicationDbContext(connection);
model.Database.CreateIfNotExists();