Есть ли способ, чтобы NHibernate обновлял только поля, которые не имеют значения по умолчанию? Скажем, у нас есть этот простой класс:Обновление только заполненных свойств
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
Мы также имеем стандартное отображение NHibernate, используя свойства для каждого поля и Id для поля Id.
Скажем, мы хотим, чтобы страница просто обновляла имя, поэтому мы отправляем идентификатор, сохраняем его в скрытом поле и показываем текстовое поле для имени. Пользователь изменяет имя и сохраняет удары. Мы возвращаем POST, новый объект Person и назначаем входящий идентификатор и имя. Затем мы сообщим NHibernate об обновлении базы данных.
Проблема в том, что возраст, очевидно, возвращается к 0 в базе данных, так как он не был заполнен возвратом с POST. Самый очевидный способ - отправить значение Age на страницу, сохранить его в скрытом поле и заново вернуть его перед сохранением. Это отлично работает, пока вы не получите еще несколько свойств на свой объект и хотите изменить только полную их руку на экране (или большой список объектов Person, для чего может потребоваться хранить множество значений в скрытых полях).
Итак, вернемся к теме вопроса: есть ли способ сообщить NHibernate о том, что в основном игнорировать свойство Age, поскольку оно будет иметь значение по умолчанию (0), прежде чем обновляться, или я застрял в метрической тонне скрытые поля для сохранения существующих значений?
Да, я могу загрузить Личность, установить имя и сохранить его. Тем не менее, это для более крупного списка таких объектов, поэтому я либо делаю нагрузку на объект, либо получаю их все, и выполняю поиск из коллекции памяти, чтобы найти правильный объект для обновления. В любом случае это боль (хотя выполнимо). Мне было интересно, был ли более простой способ. –