Пропуск новой / переходной стратегии генератора идентификаторов сущности NHibernate, когда идентификатор уже предоставлен - PullRequest
0 голосов
/ 19 июля 2010

Просто быстро ... У меня есть следующая стратегия генератора идентификаторов для одного из моих сопоставленных классов:

<id name="UID" type="System.Guid">
    <column name ="UID" sql-type ="uniqueidentifier" />
    <generator class="guid.comb" />
</id>

Рассматриваемая сущность участвует в синхронизации / объединении поведения, из которого необходимо иметь глобально уникальный идентификатор.

Когда объект создается в клиентском приложении в первый раз, его свойство UID присваивается так, что оно совпадает со значением эквивалентного объекта на сервере.

Однако вышеприведенная стратегия генератора идентификаторов перезаписывает любое значение, предоставленное для новых / переходных объектов.

Что за исправление? Должен ли я удалить стратегию генератора и назначить свои собственные GUID? Или конфигурация стратегии генератора позволяет генерировать guid.comb только при необходимости?

1 Ответ

0 голосов
/ 19 июля 2010

Я думаю, вы можете сделать это, сделав UID частным полем и контролируя доступ через свойство.

public class MyClass
{
    private Guid _uid;

    protected MyClass() { // parameterless ctor for NH }

    public MyClass(Guid uid) { _uid = uid; // assign on creation }

    public Guid Uid
    {
        get { return _uid; }
        private set { // do nothing or compare _uid to Guid.Empty and set }
    }
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...