Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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# 伪造IDbSet<;T>;支持异步操作_C#_Entity Framework_Unit Testing_Async Await - Fatal编程技术网

C# 伪造IDbSet<;T>;支持异步操作

C# 伪造IDbSet<;T>;支持异步操作,c#,entity-framework,unit-testing,async-await,C#,Entity Framework,Unit Testing,Async Await,我正试图在一个新项目中对我的第一个存储库进行单元测试,在这个项目中,我们决定将EF6主要用于异步内容。我在为我的模型伪造IDbSet时遇到了问题,并且在使用新的异步细节之前允许使用任何Linq 我正在使用一个伪造的数据库。如果我做一个简单的查询,比如 await set.FirstOrDefaultAsync(e => e.Approved); 这很有效 当我尝试执行以下操作时,会出现问题: await set.OrderByDescending(e => e.Date)

我正试图在一个新项目中对我的第一个存储库进行单元测试,在这个项目中,我们决定将EF6主要用于异步内容。我在为我的模型伪造IDbSet时遇到了问题,并且在使用新的异步细节之前允许使用任何Linq

我正在使用一个伪造的数据库。如果我做一个简单的查询,比如

await set.FirstOrDefaultAsync(e => e.Approved);
这很有效

当我尝试执行以下操作时,会出现问题:

await set.OrderByDescending(e => e.Date)
         .FirstOrDefaultAsync(e => e.Approved)`
然后我得到一个错误:

System.InvalidOperationException:源IQueryable的提供程序未实现IDBSyncQueryProvider

通过分解流畅的语法并在每一步检查结果,我很清楚IDBAncyQueryProvider在第一个“普通”Linq运算符之后消失(例如,
OrderBy
Where
Select

我怎样才能让它工作

更新(因为有些混乱):有2个项目;称之为存储库和测试。当然,测试参考资料存储库。调用
Where
发生在存储库中,它不知道FakeDbSet(也不应该知道,因为它是一个只测试的类)


更新2:简单演示。在运行单元测试之前还原Nuget包。

这里有一个链接,其中包含需要实现的确切类。

有没有办法将对.Project().to()的支持添加到FakeDBSet中?转换使用AutoMapper进行。如果代码中有Porject().To(),它就会失败。我也在使用AutoMapper项目函数,它就像一个符咒。你能告诉我失败的地方吗。