Kalau sudah membahas Repository Pattern rasanya kurang manteb jika tidak membahas Unit of Work Pattern, dua pattern ini biasanya sering digunakan secara bersamaan. Kata emak-emak “ibarat sop ayam tanpa garam, rasanya hambar” he he :D
Unit of Work Pattern digunakan untuk mengelompokan satu atau beberapa operasi (biasanya operasi CRUD) ke dalam satu kesatuan transaksi. Jika salah satu operasi gagal, yang lain juga harus dibatalkan.
Jadi cara kerja Unit of Work Pattern ini mirip dengan salah satu fitur andalan DBMS yaitu transaction.
Unit of Work Pattern sendiri merupakan salah satu pattern kesukaan Microsoft, ini bisa dilihat dari salah satu produk open source Microsoft yang menggunakan pattern ini yaitu Entity Framework. Bagi Anda yang sudah pernah mencoba Entity Framework mungkin sudah tidak asing lagi dengan class EF Context yang menggunakan Unit of Work Pattern.
Berdasarkan contoh project Repository Pattern, kita akan menambahkan interface baru dengan nama IUnitOfWork. Di dalam interface ini kita membuat beberapa property dengan tipe interface repository.
Setelah itu kita buatkan class konkretnya dengan nama UnitOfWork, dan ingat class ini harus mengimplementasikan interface IUnitOfWork.
Terakhir kita lengkapi kode class UnitOfWork seperti berikut :
Testing Class Unit of Work
Sebagai penutup kita akan melakukan tes sederhana dengan menggunakan aplikasi console. Dari hasil tes ini akan terlihat begitu mudahnya menerapkan konsep transaction menggunakan Unit of Work Pattern.