ฉันจะใช้พื้นที่เก็บข้อมูลและฉันต้องการใช้รูปแบบ UOW เนื่องจากผู้บริโภคของที่เก็บสามารถดำเนินการหลายอย่างและฉันต้องการที่จะยอมรับพวกเขาในครั้งเดียว
หลังจากอ่านบทความต่าง ๆ เกี่ยวกับเรื่องนี้แล้วฉันยังไม่เข้าใจวิธีการเชื่อมโยงองค์ประกอบทั้งสองนี้ขึ้นอยู่กับบทความที่กำลังทำในลักษณะอื่น ๆ
บางครั้ง UOW เป็นสิ่งที่อยู่ภายในที่เก็บ:
public class Repository
{
UnitOfWork _uow;
public Repository()
{
_uow = IoC.Get<UnitOfWork>();
}
public void Save(Entity e)
{
_uow.Track(e);
}
public void SubmittChanges()
{
SaveInStorage(_uow.GetChanges());
}
}
และบางครั้งก็เป็นภายนอก:
public class Repository
{
public void Save(Entity e, UnitOfWork uow)
{
uow.Track(e);
}
public void SubmittChanges(UnitOfWork uow)
{
SaveInStorage(uow.GetChanges());
}
}
เวลาอื่นคือ UOW ที่อ้างอิงถึงที่เก็บ
public class UnitOfWork
{
Repository _repository;
public UnitOfWork(Repository repository)
{
_repository = repository;
}
public void Save(Entity e)
{
this.Track(e);
}
public void SubmittChanges()
{
_repository.Save(this.GetChanges());
}
}
องค์ประกอบทั้งสองนี้เกี่ยวข้องกันอย่างไร UOW ติดตามองค์ประกอบที่จำเป็นต้องเปลี่ยนแปลงและที่เก็บมีตรรกะเพื่อยืนยันการเปลี่ยนแปลงเหล่านั้น แต่ ... ใครโทรหาใคร คนสุดท้ายมีเหตุผลมากกว่านี้ไหม?
ใครจัดการการเชื่อมต่อด้วย? หากต้องทำการดำเนินการหลายอย่างในที่เก็บฉันคิดว่าการใช้การเชื่อมต่อเดียวกันและแม้แต่การทำธุรกรรมก็เป็นเสียงที่มากกว่าดังนั้นอาจวางวัตถุการเชื่อมต่อใน UOW และสิ่งนี้ภายในที่เก็บข้อมูลก็สมเหตุสมผลเช่นกัน
ไชโย