使用实体框架按时间戳列选择新记录 [英] Select new records by timestamp column with Entity Framework

查看:23
本文介绍了使用实体框架按时间戳列选择新记录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的 SQL Server 数据库中有一个带有时间戳列 (RowId) 的表.

I have a table with timestamp column (RowId) in my SQL Server database.

我想根据这个时间戳查询新行.SQL 查询如下

I want to query new rows according to this timestamp. The SQL query is following

SELECT *
 FROM [MyTable]
 where RowId>=0x0000000000A99B06

0x0000000000A99B06 是上一个查询的最大时间戳值.

0x0000000000A99B06 is a max timestamp value from the previous query.

如何首先使用 Entity Framework 数据库进行这样的查询?RowId 映射到 byte[] 属性,我不知道如何在 LINQ 查询中比较字节数组.

How can I make such a query using Entity Framework database-first? RowId maps to byte[] property and I have no idea how to compare byte arrays in a LINQ query.

推荐答案

您不能使用 Entity Framework 执行此操作,因为它不允许在时间戳比较中使用 >= 运算符.它只允许 =.你可以这样做,例如

You can't do this with Entity Framework because it does not allow the >= operator in timestamp comparisons. It only allows =. You can do e.g.

var b = BitConverter.GetBytes(1000000L);
var query = from x in MyTable
            where x.RowId = b; // not >=

但这不会很有用.因此,您必须找到另一种获取新行的方法,例如标识列中的值,或添加真实"时间戳(日期时间)列.

But that would not be very useful. So you've got to find another way to get new rows, e.g. values in an identity column, or add a "real" time stamp (datetime) column.

这篇关于使用实体框架按时间戳列选择新记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆