我不能 100% 确定我已经正确地实现了我的 Repository 和 UnitOfWork 模式,但是我看不出它还能如何工作。
例如,我有两个对象,Apple 和 Orange。
Apple 通过 OrangeID 加入 Orange,如下所示:
public class Apple
{
public int OrangeID { get; set; }
}
我想创建一个新的 Apple 和一个新的 Orange,并且我想适当地设置 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() 在写入数据库时应该分配适当的值吗?
任何帮助/提示将不胜感激,谢谢邓肯