NHibernate Только для чтения сущностей во время выполнения - PullRequest
3 голосов
/ 23 октября 2009

Я хотел бы знать, есть ли способ сделать экземпляр сущности неизменным во время выполнения. Я знаю, что у меня могут быть типы только для чтения, но я хотел бы, чтобы экземпляры типов были доступны только для чтения во время выполнения. Причина в том, что я хочу использовать объекты домена NH как легковесную сущность, изменяя свойства, но не хочу, чтобы эти изменения сохранялись при выполнении Session.Flush () или аналогичных. Всегда есть Session.Evict (), но это не помешает не знающему разработчику Session.Save () на объекте «только для чтения».

Ответы [ 2 ]

5 голосов
/ 06 октября 2011

Во время выполнения, а? Я все еще немного озадачен тем, что именно вы спрашиваете, но я делал что-то подобное в прошлом:

foreach (var order in orders)
{
    _nhSession.SetReadOnly(order, true); //prevent database updates
}

Я сделал это некоторое время назад, потому что когда я запрашивал список заказов, некоторые свойства объекта не обнулялись, когда они должны были быть. Таким образом, когда NHibernate выполнял сброс, он пытался обновить все мои заказы и установить для нескольких полей, которые были нулевыми из базы данных, их значения по умолчанию C #, например, поле Integer в базе данных, установленное на NULL, изменится на 0 в C # ,

1 голос
/ 23 октября 2009

Взгляните на эту статью Фабио Мауло , вы можете использовать ее в качестве отправной точки и изменить ее для отслеживания отдельных объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...