我们使用实体框架将实体存储在数据库中。我们使用存储库模式来包装相当复杂的 Linq 查询。我们希望针对简单的内存集合对这些查询进行单元测试。这一切都很好,直到我们遇到按 sql 类型 rowversion 排序的查询以查找集合中最后添加的记录。EntityFramework 能够将此 Linq 转换为 SQL。
C# 将行版本转换为字节数组,因为当对象从数据库中重新水化时,它太大而无法容纳 ulong(?)。
所以我们将这些字节数组添加到我们的内存测试数据中。但是,如果我们对我们的内存集运行查询,Linq 会爆炸,因为字节数组不可比较,因此它无法执行所需的排序。
所以我们编写了一个适用于字节数组的比较器,当我们在查询中使用这个比较器时,它们在内存中工作得很好。
但是现在 LinqToEntities 无法使用比较器处理查询。
我们似乎陷入了困境 22……</p>
有没有人在内存和 LinqToEntities 中工作的解决方案?