Я не уверен на 100%, что правильно реализовал свои шаблоны Repository и UnitOfWork, но тогда я не вижу, как это будет работать.
Например, у меня есть два объекта, Apple и Orange.
Apple присоединяется к Orange через OrangeID следующим образом:
public class Apple
{
public int OrangeID { get; set; }
}
Я хочу создать новое Apple и новый Orange, и я хочу установить соответствующую идентификационную ссылку. Но у меня есть проблема. Я не буду знать OrangeID, пока не сохраню Orange в базе данных.
Значит, у меня будет следующее:
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 () должен присвоить соответствующие значения при записи в базу данных?
Любая помощь / советы будут оценены,
Спасибо
Дункан