【发布时间】:2009-02-13 21:08:25
【问题描述】:
我的表有一个名为“RowVer”的时间戳列,LINQ 映射到类型 System.Data.Linq.Binary。这种数据类型对我来说似乎没用,因为(除非我遗漏了什么)我不能做这样的事情:
// Select all records that changed since the last time we inserted/updated.
IEnumerable<UserSession> rows = db.UserSessions.Where
( usr => usr.RowVer > ???? );
因此,我正在研究的解决方案之一是添加一个名为 RowTrack 的新“计算列”,它在 SQL 中定义如下:
CREATE TABLE UserSession
(
RowVer timestamp NOT NULL,
RowTrack AS (convert(bigint,[RowVer])),
-- ... other columns ...
)
这让我可以像我想要的那样查询数据库:
// Select all records that changed since the last time we inserted/updated.
IEnumerable<UserSession> rows = db.UserSessions.Where
( usr => usr.RowTrack > 123456 );
这是一种糟糕的做事方式吗?查询计算列的性能如何?有没有更好的解决方法?
另外,我正在针对 Sql Server 2000 进行开发,以实现最终的向后兼容性,但我可以说服老板让 2005 成为最低公分母。
【问题讨论】:
标签: sql-server linq performance