我不是100%確定我已經正確地實現了我的Repository和UnitOfWork模式,但是然後我看不到這將如何工作。UnitOfWork模式和原子操作
例如,我有兩個對象,Apple和Orange。
蘋果通過OrangeID加入到橙色,像這樣:
public class Apple
{
public int OrangeID { get; set; }
}
我想創建一個新的蘋果和一個橘子新的,我想設置適當的ID連接起來。但我有一個問題。在將Orange保存到數據庫之前,我不會知道OrangeID。
因此,這意味着我將有以下:
var unitOfWork = new UnitOfWork();
Orange newOrange = new Orange();
OrangeRepository.Insert(newOrange);
unitOfWork.Commit();
//newOrange will have been updated with the actual ID
Apple newApple = new Apple(newOrange.ID);
etc...
這不是一個原子操作,除非我有位於上述外側的事務。但我認爲這就是UnitOfWork應該處理的事情?或者我的UnitOfWork.Commit()應該在寫入數據庫時分配適當的值?
任何幫助/提示,將不勝感激,謝謝 鄧肯