Учитывая оптимистический параллелизм с использованием свойства version и службы отдыха json с клиентом, который возвращает наборы изменений, состоящие только из Id, Version и измененных свойств, как я могу обновить свой объект на стороне сервера?
Я хотел десериализовать мой json в отсоединенную сущность, а затем использовать метод ISession.Merge для обновления моей сущности. Тем не менее, моя отдельная сущность будет иметь нулевые значения для многих свойств, и моя сущность будет обновлена со всеми этими, если я вызову слияние, а это не то, что я хочу. Если есть способ указать слиянию игнорировать свойства, которые имеют значение NULL, и сохранить все соответствующие ненулевые значения от существующей сущности, которая решит мою проблему.
Если нет способа настроить поведение для слияния, я, конечно, мог бы получить постоянную сущность и реализовать свой собственный метод слияния, используя отражение. Проблема этого подхода состоит в том, что он требует, чтобы я сначала запросил в БД сущность, а затем обновил ее, тогда как метод слияния должен делать это как одну операцию, если я не ошибаюсь.
Вы можете спросить, почему я хочу передать только наборы изменений вместо полной сущности. Это потому, что это позволяет мне отправлять минимальные данные, а также указывает на простоту того, что пользователь пытается изменить, что я могу использовать для проверки прав пользователей.
Если вы не сможете сделать это в рамках nhibernate, как бы вы поступили?