Bir depo uygulayacağım ve deponun tüketicisi birkaç işlem yapabileceğinden UOW modelini kullanmak istiyorum ve aynı anda taahhüt etmek istiyorum.
Konuyla ilgili birkaç makaleyi okuduktan sonra, hala başka bir şekilde yapıldığı makaleye bağlı olarak, bu iki öğeyi nasıl ilişkilendireceğim.
Bazen UOW depodaki dahili bir şeydir:
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());
}
}
Ve bazen dışsaldır:
public class Repository
{
public void Save(Entity e, UnitOfWork uow)
{
uow.Track(e);
}
public void SubmittChanges(UnitOfWork uow)
{
SaveInStorage(uow.GetChanges());
}
}
Diğer zamanlarda, Depola referans veren 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());
}
}
Bu iki unsur nasıl ilişkilidir? UOW, değiştirilmesi gereken öğeleri izler ve depo, bu değişiklikleri devam ettirmek için mantığı içerir, ancak ... kim kimi çağırır? Sonuncusu daha anlamlı mı?
Ayrıca, bağlantıyı kim yönetir? Havuzda birkaç işlem yapılması gerekiyorsa, aynı bağlantıyı kullanmak ve hatta işlemin daha sağlam olduğunu düşünüyorum, bu yüzden belki de bağlantı nesnesini UOW'un içine koyun ve bu da havuzun içine de mantıklı geliyor.
Şerefe