ПРИМИТИВЫ и отображений я говорю о в этом вопросе можно найти here :)Освежающий объект выбрасывает NHibernate.UnresolvableObjectException
Вот контекст:
У меня есть родительский Вид- которая помогает управлять некоторыми объектами и имеет свою собственную сессию.
От этой виртуальной машины я открываю другую модель представления (со своим собственным сеансом), выполняю некоторые изменения для объекта (добавляет и/или удаляет дочерние элементы), и когда я проверяю изменения, я фиксирую сеанс и предупреждаю первый вид-модель для обновления дисплея:
public void Validate()
{
using (var tx = Session.BeginTransaction())
{
try
{
SelectedTeam.ClearRoster();
foreach (var teamPlayer in TeamPlayers)
SelectedTeam.AddPlayer(teamPlayer);
teamsRepository.SaveOrUpdate(SelectedTeam);
tx.Commit();
}
catch (Exception ex)
{
tx.Rollback();
}
finally
{
if (tx.WasCommitted)
ServiceLocator.Current.GetInstance<Mediator>().NotifyColleagues(MediatorMessages.DisplayEntityInfos, SelectedTeam.Id);
}
}
}
Вот нарушенный метод родительского VM:
public void RefreshEntitiesListAndDisplayEntityInfos(int selectedEntityId)
{
TEntity entity = entitiesRepository.Load(selectedEntityId);
Session.Refresh(entity);
//...
}
исключения брошено на Refresh линии:
NHibernate.UnresolvableObjectException
И сообщение:
Нет строки с данным идентификатором существует [Emidee.CommonEntities.PlayerInTeam # 3
Я могу открыть и изменить юридическое лицо несколько раз, но кажется, что исключение выбрасывается, когда я удаляю дочерние элементы, а затем добавляю еще один и, наконец, удаляю другой.
После некоторых чтений в Интернете, похоже, это связано с тем, что когда я обновляю объект и из-за того, что я изменил отношения HasMany (например, я удалил игрока), NH пытается перезагрузить удаленную строку.
Я попытался добавить оператор NotFound.Ignore в HasMany в мои сопоставления, я попытался принудительно ввести новый запрос в БД вместо загрузки, но я все еще получаю это исключение.
Кто-нибудь знает, как я могу это исправить?
Заранее спасибо
Майк
Почему бы не пройти сеанс, используемый для «детской» модели просмотра? Я думаю, что это решит проблему и предотвратит повторную выборку коллекции. – Jay
Поскольку я пытаюсь применить то, что ayende рекомендует делать здесь: http://msdn.microsoft.com/en-us/magazine/ee819139.aspx – Mike