如何在Linq查询中处理Sql Version和C#字节数组

时间:2017-10-31 16:33:12

标签: sql-server entity-framework linq rowversion

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

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

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

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

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

我们似乎陷入困境22 ......

有没有人在内存和LinqToEntities中运行的解决方案?

1 个答案:

答案 0 :(得分:0)

如果您将其与实施 <form method="post" action={% url 'delete_todo' todo_id=todo.id %}> {% csrf_token %} <input type="button" id="submit" value="Delete" /> </form> ...作为比较器结合起来,这似乎是一种解决方法:

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