我正在使用新的 EF 7ExecuteDelete
and ExecuteUpdate
功能而且它们都很棒。但是当我尝试为使用它们的函数编写单元测试时,这些测试崩溃了。
我在 .NET Core 7 上使用 EF 7.0.1,Microsoft.EntityFrameWorkCore.InMemory
7.0.1 和 Xunit 2.4.2
[Fact]
public async Task DeleteAccountAsync__Success()
{
var accountId = Guid.Parse("52ff9d4e-efb9-4b51-b5e7-1734d10187f7");
// CRASH
_context.Accounts
.Where(p => p.AccountId == accountId)
.ExecuteDelete();
}
private void SeedDataBase()
{
var a1 = new Account
{
AccountId = Guid.Parse("52ff9d4e-efb9-4b51-b5e7-1734d10187f7"),
};
var a2 = new Account
{
AccountId = Guid.Parse("d5c38300-0de6-4118-8d01-6bc94842d4b5"),
};
_context.Accounts.AddRange(a1, a2);
_context.SaveChanges();
}
这是我得到的错误:
消息“无法翻译 LINQ 表达式 'DbSet()\n .Where(a => a.AccountId == __accountId_0)\n .ExecuteDelete()'。以可翻译的形式重写查询,或者切换通过插入对“AsEnumerable”、“AsAsyncEnumerable”、“ToList”或“ToListAsync”的调用来显式进行客户端评估。有关详细信息,请参阅 https://go.microsoft.com/fwlink/?linkid=2101038。
这些新扩展仅适用于关系提供者。并且 InMemory 不是关系提供者
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)