.net - 使用 Entity Framework 按时间戳列选择新记录

标签 .net sql sql-server entity-framework timestamp

我的 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/

相关文章:

sql-server - 检测源中未映射到目标的新列并在 SSIS 中失败

.net - Windows Phone 7 和不安全代码

sql-server - SQL Server 中计算列的最佳实践

c# - 从 C# FtpWebRequest FTP 代码更改为 SFTP

sql - 两种 SQL 连接符号有什么区别?

sql - Oracle SQL中是否有类似“如果不存在创建序列...”的内容?

sql - 错误,尝试插入时字符串或二进制数据将被截断

sql-server - 2页死锁

c# - 删除接口(interface)中的冗余类型

c# - 如何在 C# 项目中使用 VB.Net 扩展方法