NHibernate разница между нодеттером и стратегиями доступа к полю - PullRequest
2 голосов
/ 26 мая 2011

Первоначально я писал о проблеме, когда NHibernate выдавал дополнительный запрос для коллекции, которая была представлена ​​как ReadOnlyCollection и отображена как "nosetter" или "ReadOnlyPropertyThroughCamelCaseField" в FluentNhibernate.

Свойство не было доступнопрямо в моем коде, но NHibernate думал, что произошли изменения.Когда я изменил стратегию доступа на «field» - или «CamelCaseField» в беглом nhibernate, это устранило проблему.

Итак, мой вопрос: в чем разница между двумя стратегиями доступа в том, как NHibernate обнаруживает изменения вколлекция?

Спасибо Бен

1 Ответ

0 голосов
/ 09 мая 2012

поле: NHibernate получит доступ к полю напрямую. NHibernate использует значение атрибута name в качестве имени поля. Это можно использовать, когда метод получения и установки свойства содержит дополнительные действия, которые вы не хотите выполнять, когда NHibernate заполняет или читает объект. Если вы хотите, чтобы имя свойства, а не поле было тем, что потребители вашего API используют с HQL, тогда необходима стратегия именования.

nosetter: NHibernate получит доступ к полю непосредственно при установке значения и будет использовать свойство при получении значения. Это может быть использовано, когда свойство предоставляет только метод доступа get, поскольку потребители вашего API не могут изменить значение напрямую. Стратегия именования необходима, потому что NHibernate использует значение атрибута name в качестве имени свойства и ему нужно указать, как называется поле.

источник: http://nhibernate.info/doc/nh/en/index.html

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