2009-05-08 23 views
5

Tôi sử dụng linq 2 sql cho ORM của tôi.Làm cách nào để biết một đối tượng Linq-to-Sql đã cho có được gắn vào một datacontext không?

Vì lý do hiệu suất, tôi sắp xếp lại một số trong số chúng và ném chúng vào trong memcached.

Khi chúng được deserialized, chúng tất nhiên không được gắn vào một datacontext, 100% tốt, vì chúng chỉ được sử dụng để đọc từ trong các kịch bản đó.

Vì lý do sự tỉnh táo, tôi muốn có thể cho biết liệu một đối tượng nhất định có được gắn vào một văn bản dữ liệu (được lấy từ db) hay không (được tìm nạp từ memcached).

Bất kỳ ý tưởng nào?

Cảm ơn.

Trả lời

9

Sử dụng GetOriginalEntityState. Đây là một thử nghiệm.

 
Customer cust = new Customer(); 
ctx.Customers.Attach(cust); 

Customer orig = ctx.Customers.GetOriginalEntityState(cust); 

//test if orig is null 
+1

Cảm ơn David, điều đó dường như không hoạt động. Tuy nhiên, khi bạn cố đính kèm một thực thể đến từ ngữ cảnh, nó sẽ đưa ra một ngoại lệ, điều này có thể tốn kém nếu séc này được chạy thường xuyên như một người bảo vệ: \ – Thenon

+0

Chỉ cần sử dụng phương thức 'GetOriginalEntityState' và kiểm tra rỗng mà không có sự kêu gọi 'Đính kèm' đầu tiên dường như hoạt động 'entityTable.InsertAllOnSubmit (entity.Where (e => entityTable.GetOriginalEntityState (e) == null))' chèn chính xác tất cả các thực thể mới. – bstoney

Các vấn đề liên quan