Bảng của tôi có cột dấu thời gian có tên "RowVer" mà LINQ ánh xạ để nhập System.Data.Linq.Binary. kiểu dữ liệu này có vẻ vô ích với tôi bởi vì (trừ khi tôi đang thiếu một cái gì đó) tôi không thể làm những việc như thế này:Truy vấn cột dấu thời gian từ LINQ to SQL
// Select all records that changed since the last time we inserted/updated.
IEnumerable<UserSession> rows = db.UserSessions.Where
(usr => usr.RowVer > ????);
Vì vậy, một trong những giải pháp tôi đang nhìn vào là thêm một mới "tính cột" gọi RowTrack được định nghĩa trong SQL như thế này:
CREATE TABLE UserSession
(
RowVer timestamp NOT NULL,
RowTrack AS (convert(bigint,[RowVer])),
-- ... other columns ...
)
này cho phép tôi để truy vấn cơ sở dữ liệu như tôi muốn:
// Select all records that changed since the last time we inserted/updated.
IEnumerable<UserSession> rows = db.UserSessions.Where
(usr => usr.RowTrack > 123456);
Đây có phải là một cách xấu để làm những việc? Cách người thực hiện truy vấn trên cột được tính toán? Có công việc tốt hơn không?
Ngoài ra, tôi đang phát triển chống lại Sql Server 2000 cho khả năng tương thích ngược tối hậu, nhưng tôi có thể nói với ông chủ làm năm 2005 mẫu số chung thấp nhất.
Cảm ơn bài đăng của bạn. Nó làm cho tôi nghĩ về vấn đề hơn nữa để nhận ra rằng một datetime là tốt hơn nhiều bởi vì nó đại diện cho một mảnh thông tin hữu ích hơn. Bây giờ tôi có thể phát hiện _how_ cũ một bản ghi là, không chỉ nếu nó cũ. –
đừng quên thêm chỉ mục cho chúng –