Как я могу определить, задано ли значение NHibernate C # или кодом приложения? - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть пользовательский установщик для свойства объекта, к которому я хочу добавить некоторые пользовательские журналы, чтобы я мог просматривать журналы и видеть, когда это значение изменяется.Однако кажется, что всякий раз, когда NHibernate считывает это значение из базы данных и заполняет объект, ведется запись в журнал.Есть ли способ программно определить, что изменение происходит, потому что NHibernate заполняет объект?

public virtual string URL
        {
            get
            {
                return pURL;
            }
            set
            {
                if (!value.ToLower().Contains("https://"))
                {
                    specialLog.Warn($"Set a URL to {value} with no HTTPS. Callstack: {Environment.StackTrace}"); //This is triggered on NHibernate read always
                }

                pURL = value;
            }
        }

1 Ответ

0 голосов
/ 28 декабря 2018

Вам нужно изменить отображение, чтобы дать NHibernate знать, что вы хотите использовать «полевую» стратегию доступа для этого свойства.Таким образом, NHibernate будет обходить сеттеры и устанавливать поле напрямую, избегая какой-либо пользовательской логики.

Если вы используете отображение hbm.xml, вы можете изменить отображение для объекта следующим образом:

<property name="pURL" column="URL" access="field">

И для сопоставления по коду:

c.Property("pURL", m =>
{
    m.Column("URL");
    m.Access(Accessor.Field);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...