2009-05-08 11 views
5

ORM için linq 2 sql kullanıyorum.Belirli bir Linq-to-Sql nesnesinin bir datacontext'e eklenmiş olup olmadığını nasıl anlarım?

Performans nedenleriyle, bazılarını seri hale getiriyorum ve bunları memcached haline getiriyorum.

Serileştirildiklerinde, tabii ki% 100 para cezası olan bir veri dosyasına eklenmezler, çünkü bu senaryolardan yalnızca okumak için kullanılırlar.

Akıl sağlığıyla ilgili nedenlerden dolayı, belirli bir nesnenin bir veri dosyasına (db'den getirilen) eklenmiş olup olmadığını (memcached'den getirilip getirilmediğini) söylemek isterim.

Herhangi bir fikrin var mı?

Teşekkürler.

cevap

9

GetOriginalEntityState kullanın. İşte bir test.

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

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

//test if orig is null 
+1

Teşekkürler David, bu işe yarıyor gibi görünüyor. Ancak, bağlamdan gelen bir varlığı iliştirmeye çalıştığınızda, bu denetim bir bekçi olarak sık sık çalıştırılırsa pahalıya gelebilecek bir istisna atar: \ – Thenon

+0

Sadece 'GetOriginalEntityState' yöntemini kullanarak ve bir null onay 'Attach' çağrısı olmadan ilk önce çalışır gibi görünüyor entityTable.InsertAllOnSubmit (entities.Where (e => entityTable.GetOriginalEntityState (e) == null)) 'tüm yeni öğeleri doğru bir şekilde ekler. – bstoney

İlgili konular