Обновить поле «Версия», если строка обновления содержит одну последовательность на таблицу - PullRequest
2 голосов
/ 12 сентября 2011

У меня есть таблица с полем «Версия», которая должна иметь уникальное значение для каждой таблицы (может быть последовательность). Значение версии должно обновляться при обновлении строки.

Я использую Fluent NHibernate и SQLite.

Обратите внимание, что поле «Версия» имеет целочисленный тип. Когда я использовал тип datetime для версии, все было в порядке, потому что он уникален для каждой таблицы. При использовании типа int он уникален для каждой строки.

this.Version(x => x.Version).Column("Version");

Ответы [ 2 ]

1 голос
/ 13 сентября 2011

Если вы не используете столбец версии в качестве «версии», как ее определяет NHibernate, вам следует просто сопоставить его как свойство и использовать другой столбец для управления версиями NHibernate.

Вы можете создать триггер, чтобы заполнить ваш столбец значением последовательности на вставке и отобразить его следующим образом:

Map(x => x.Version).Column("Version")
   .Generated.Insert()
   .Not.Insert()
   .Not.Update();
0 голосов
/ 13 сентября 2011

Я думаю, что если ваш Version станет LastModified DateTime, ваш Revision подход будет более понятным, также становится очевидным, что версия не может быть настолько уникальной для всей таблицы.

Получить DateTime.UtcDate или вызвать ту же функцию в БД может быть проще, чем передать уникальную функцию автоинкремента в БД, если у вас нет доступа к последовательностям.

Если это будет соответствовать вашим потребностям, я думаю, что прощеПрограмма, чем триггерная версия, которая мне тоже нравится.Тем не менее, я не думаю, что мы можем отобразить такое поведение, используя FluentNHibernate либо ..

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