ฉันมีวัตถุ Nhibernate ที่เรียกว่า Car วัตถุ Car นี้มีคอลเลกชัน PersietentBag IList ที่เรียกว่า Doors ทั้งหมดนี้อยู่ในการโหลดแบบ Lazy Loading
ถ้าฉันทำ (ในเซสชั่น 1)
int singleDoor = Car.Doors[0];
คอลเลกชันที่ขี้เกียจที่สุดโหลดจาก db และวัตถุที่เกี่ยวข้องจะถูกเพิ่มลงในแคชระดับแรก i จะมีในแคชระดับที่ 1 N วัตถุ Car และ N Doors โหลดจาก db
จากอีกด้านหนึ่ง (ที่ส่วนอื่นของโค้ดในเซสชัน 2) ฉันโหลดวัตถุ Car เดียวกันและทำภารกิจเดียวกัน
int singleDoor = Car,Doors[0];
และขับไล่รถยนต์และวัตถุประตูทั้งหมดออกจากเซสชั่น 2
ฉันแก้ไขสถานะของวัตถุนี้และต้องการแนบวัตถุ doscontected tu SESSION1 เพื่อบันทึกและทำ
mySession.Update(Car);
แต่เมื่อฉันพยายามอัปเดต obejcts ของประตูเห็นได้ชัดว่าฉันมีข้อยกเว้น (obejct อื่นที่มี id เดียวกัน ฯลฯ) ถูกส่งออกไปเนื่องจากยังมีวัตถุอื่นที่มี id เดียวกัน
บอทเป็นเรื่องยากที่จะค้นหาวัตถุเก่าที่จะขับไล่ ฉันจะกำจัดวัตถุเก่าหรือล้างแคชระดับที่ 1 ได้อย่างไร (ตามประเภทและรหัสเท่านั้น) หรือทิ้งวัตถุเก่าออกจากแคชและอัปเดตสิ่งที่ฉันต้องการ
ขอบคุณล่วงหน้า.