Это не в настоящее время доступно через nHibernate (или Hibnernate, AFAIK) API. Вы могли записать что-то вроде этого сами путем хранения состояния объектов, когда они загружаются в сессию, затем сравнивают их.
ПРИМЕЧАНИЕ: Я не видел это для меня, но, если Вы не заблокировали в выбор ORM, необходимо посмотреть на Дозвуковой. Большое грязное состояние прослежено в самих объектах, и Вы смогли бы определить, грязно ли особое свойство.
Попробуйте следующее
if ( System.Diagnostics.Debugger.IsAttached ) {
...
}
Прежде чем использовать это для закрытия приложения, запущенного в отладчике, следует помнить о двух вещах:
Теперь, чтобы быть более полезным, вот как это использовать обнаружение, чтобы func eval в отладчике не меняли состояние вашей программы, если у вас есть кэш - свойство, которое лениво оценивается по соображениям производительности.
private object _calculatedProperty;
public object SomeCalculatedProperty
{
get
{
if (_calculatedProperty == null)
{
object property = /*calculate property*/;
if (System.Diagnostics.Debugger.IsAttached)
return property;
_calculatedProperty = property;
}
return _calculatedProperty;
}
}
Я также иногда использовал этот вариант, чтобы гарантировать, что мой шаг отладчика - through не пропускает оценку:
private object _calculatedProperty;
public object SomeCalculatedProperty
{
get
{
bool debuggerAttached = System.Diagnostics.Debugger.IsAttached;
if (_calculatedProperty == null || debuggerAttached)
{
object property = /*calculate property*/;
if (debuggerAttached)
return property;
_calculatedProperty = property;
}
return _calculatedProperty;
}
}