В этом приложении WPF я использую Unity для регистрации IDataContext, который передается в качестве параметра конструктора IUnitOfWork.
Я на самом деле использую многоуровневую архитектуру (которая всегда должна давать мне отдельный объект IUnitOfWork и, следовательно, отдельный IDataContext), но я хочу подделать это поведение, чтобы IUnitOfWork всегда был одним и тем же экземпляром (и, следовательно, IDataContext экземпляр будет одинаковым везде в моем приложении).
Это означает, что приложение использует (классическое) двухуровневое приложение в отношении текста данных!
... и случаи, когда я получаю разрешение (используя Unity), фактически одинаковы везде в моем приложении (я использовал GetHashCode () из них, чтобы подтвердить это).
Так что, кажется, все работает, как ожидалось!
Но, как я уже говорил в моем предыдущем посте, всякий раз, когда запись имеет соответствующие записи EntitySet и обновляется, Datacontext делает это немедленно (в этой последовательности):
1) вставка основной записи со значениями, которые были изначально в записи до изменения
2) обновление подробной записи, изменяющей ее Id на новую основную запись на шаге 1)
3) обновление основной записи с измененными (новыми) значениями.
Шаги 1) и 2) должны появиться НИКОГДА , тогда как только шаг 3) является правильным (и должен быть единственным, появляющимся в текстовом тексте данных.
Я читал во многих блогах, что вам нужно присоединить / отсоединить и сделать какие-то чёрные магические вещи, чтобы преодолеть эту ситуацию, но, к сожалению, везде есть только один и тот же DataContext, поэтому записи всегда прикрепляются к это, так что это явление не должно появляться! (или я что-то упустил)! ???
Любая помощь приветствуется!