Повторное сопоставление генерации идентификатора NHibernate - PullRequest
0 голосов
/ 27 июля 2011

У нас есть приложение, которое в настоящее время поддерживает базы данных Oracle и SQL Server.Мы находимся в процессе перехода на NHibernate из другого ORM.

Наши сопоставления идентификаторов (для оракула) в итоге выглядят так:

<id name="Id" column="FoozId">
  <generator class="native">
    <param name="sequence">Fooz_SEQ</param>
  </generator>
</id>

Мы не можем просто использовать «native», потому что для этого используется одна последовательность всей базы данных, и нам нужнопо одному на тип объекта.

Мы пытаемся использовать идею повторного перетаскивания, обсуждаемую здесь , и она, кажется, работает достаточно хорошо для таких вещей, как обрезание имен таблиц длиной более тридцати символов и т. Д.не выясните, как удалить параметр sequence из наших отображений, когда мы их пропускаем.Мы по-прежнему хотим использовать собственный генераторный класс для SQL Server, но опускаем имя последовательности.

Это будет выполнимо или нам потребуется сгенерировать два набора сопоставлений?

1 Ответ

1 голос
/ 27 июля 2011

Это похоже на тестовый проект, который мы настроили:

if (classMap.Identifier.IsSimpleValue) {
    var simpleVal = classMap.Identifier as SimpleValue;
    simpleVal.IdentifierGeneratorProperties.Remove("sequence");
}

Не уверен, что это лучший способ сделать это, но в нем есть несколько простых интеграционных тестов, проходящих по базе данных SQL Server с сопоставлениями Oracle.

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