NHibernate и самообследование сущностей - PullRequest
2 голосов
/ 04 января 2011

Существует ли какая-либо архитектурная или философская причина, по которой NHibernate не поддерживает самостоятельные отслеживания сущностей? Отслеживание изменений, основанное на сеансе, прекрасно, но в некоторых редких случаях его нельзя использовать (например, большое количество объектов в сеансе, но только один объект изменяется на транзакцию).

Каково ваше мнение? Спасибо.

Ответы [ 3 ]

1 голос
/ 21 июня 2011

Вы также можете взглянуть на FindDirty метод IInterceptor.Здесь вы можете внедрить свой собственный грязный механизм отслеживания, не влияя на бизнес-логику и не отказываясь ни от какой другой функции NH.

0 голосов
/ 21 июня 2011

Существует принципиальная разница между NHibernate и Entity-Framework.Метод ObjectContext.SaveChanges (..) EF сохраняет только изменения, внесенные в объект, пока он был частью контекста объекта.Пример:

MyEntity e = new MyEntity();
e.Key = blabla;
e.Id = 3242342;
e.Name = "Hugo";
using(MyObjectContext ct = new MyObjectcontext())
{
    ct.MyEntity.Attach(e);
    ct.SaveChanges();
}

Это вообще не изменит БД, потому что не было никаких изменений, которые были внесены в сущность, пока она была частью контекста.В NHibernate значение Hugo будет сохранено в БД.В Nhibernate нет необходимости самостоятельно отслеживать объекты.

0 голосов
/ 04 января 2011

Я на самом деле не знаю, что означает «самосопровождаемые сущности», полагаю, это происходит из структуры сущностей? IStatelessSession не кэширует сущности. Сеанс построен не для того, чтобы в кеше было много сущностей, а для того, чтобы содержать только сущности, отображаемые на экране пользователю. Если вам нужны пакетные или длительные транзакции, другие инструменты будут работать лучше, чем NHiberante. Я думаю, что это не встроенный в NHiberante по следующим причинам:

  • Люди уже используют другие инструменты.
  • Существует не так много существующего кода и не так много возможностей для его создания.
  • Существующие функции требуют серьезных изменений или должны быть принесены в жертву.
  • Кто-то должен написать код ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...