我的 SQL Server 数据库中有一个带有时间戳列 (RowId
) 的表。
我想根据这个时间戳查询新行。 SQL查询如下
SELECT *
FROM [MyTable]
where RowId>=0x0000000000A99B06
0x0000000000A99B06
是上一个查询的最大时间戳值。
如何使用 Entity Framework 数据库优先进行此类查询? RowId
映射到 byte[]
属性,我不知道如何在 LINQ 查询中比较字节数组。
最佳答案
实际上你可以做一些小修改。它对我来说 100% 有效
internal static class EntityFrameworkHelper
{
public static int Compare(this byte[] b1, byte[] b2)
{
throw new NotImplementedException();
}
}
之后你可以像这样使用它:
public void SomeMethod()
{
var messages = Set<Message>().Where(m => m.Modified.Compare(filter.TimeStamp) > 0).ToList();
}
它最终会生成这样的 SQL 语法:“从修改的消息中选择 * > @param)。它可以工作。永远不会抛出异常。
关于.net - 使用 Entity Framework 按时间戳列选择新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17761114/