0

我们使用实体框架将实体存储在数据库中。我们使用存储库模式来包装相当复杂的 Linq 查询。我们希望针对简单的内存集合对这些查询进行单元测试。这一切都很好,直到我们遇到按 sql 类型 rowversion 排序的查询以查找集合中最后添加的记录。EntityFramework 能够将此 Linq 转换为 SQL。

C# 将行版本转换为字节数组,因为当对象从数据库中重新水化时,它太大而无法容纳 ulong(?)。

所以我们将这些字节数组添加到我们的内存测试数据中。但是,如果我们对我们的内存集运行查询,Linq 会爆炸,因为字节数组不可比较,因此它无法执行所需的排序。

所以我们编写了一个适用于字节数组的比较器,当我们在查询中使用这个比较器时,它们在内存中工作得很好。

但是现在 LinqToEntities 无法使用比较器处理查询。

我们似乎陷入了困境 22……</p>

有没有人在内存和 LinqToEntities 中工作的解决方案?

4

1 回答 1

0

Compare(this byte[]如果您将其与实施... 作为您的比较器相结合,这似乎是一种解决方法:

https://stackoverflow.com/a/19402565/2557128

于 2017-10-31T18:12:01.827 回答