2009-05-08 1 views
5

내 ORM에 linq 2 sql을 사용합니다.주어진 Linq-to-SQL 개체가 datacontext에 연결되었는지 어떻게 알 수 있습니까?

성능상의 이유로 일부를 직렬화하여 memcached에 던집니다.

데이터를 직렬화 할 때 해당 데이터는 해당 시나리오에서 읽기 전용으로 사용되므로 100 % 괜찮은 데이터 연결 텍스트에는 연결되지 않습니다.

그러나 정신병의 이유로 주어진 개체가 datacontext (db에서 가져온 파일)에 첨부되어 있는지 또는 memcached에서 가져온 파일이 아닌지 확인할 수 있기를 바랍니다.

아이디어가 있으십니까?

감사합니다.

답변

9

GetOriginalEntityState를 사용하십시오. 여기 테스트가 있습니다.

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

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

//test if orig is null 
+1

데이빗 감사합니다. 작동하지 않는 것 같습니다. 그러나 컨텍스트에서 가져온 엔티티를 연결하려고하면 예외를 throw합니다.이 체크가 guard : \ – Thenon

+0

과 같이 자주 실행되면 비용이 많이 듭니다. 'GetOriginalEntityState' 메서드와 Null 체크 만 사용하면됩니다. 'Attach'라는 콜이 없으면 먼저 작동하는 것처럼 보입니다. entityTable.InsertAllOnSubmit (entities.Where (e => entityTable.GetOriginalEntityState (e) == null))'은 모든 새로운 엔티티를 올바르게 삽입합니다. – bstoney

관련 문제