Отображение моего существующего столбца идентификатора с помощью NHibernate, который продолжает увеличивать идентичность - PullRequest
0 голосов
/ 11 сентября 2009

Я изучаю NHibernate, чтобы выучить более надежный ORM, чем linq to sql, но я борюсь с некоторыми простыми вещами.

Моя первая задача - сопоставить этот столбец идентификаторов с помощью hbm.xml.

CREATE TABLE [dbo].[Party](
   [Id] [int] IDENTITY(1,1) NOT NULL
 CONSTRAINT [PK_Party] PRIMARY KEY CLUSTERED 
(
[Id] ASC
) WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

Когда я использую следующее отображение, я получаю странную экспортированную схему DDL

   <class name="Party" table="Party">
     <id name="Id">
      <column name="Id" />
      <generator class="native" ></generator>
     </id>
   </class>

, который генерирует следующее с помощью инструмента экспорта

create table Party (
    Id INT IDENTITY NOT NULL,
    primary key (Id)
)

с помощью Nhibernate, как я могу добавить кластерный первичный ключ и автоматически увеличивающийся идентификатор?

Или, как в мире NHibernate способ отделить вашу схему БД от отображения и использовать generator = native?

Я начинаю думать, что NHibernate не следует использовать для генерации схемы, если у вас уже есть схема БД, которая точно настроена на конкретный сервер.

Любая помощь очень ценится.

Ответы [ 2 ]

1 голос
/ 11 сентября 2009

Если вы работаете с Microsoft SQL (похоже), DDL схемы, которую генерирует NHibernate , создаст первичный ключ в виде кластеризованного индекса.

MSSQL по умолчанию создает первичные ключи как кластеризованный индекс (на самом деле, я думаю, что они всегда кластеризованы).

1 голос
/ 11 сентября 2009

Я не понимаю. У вас уже есть БД, так почему вы хотите использовать NHibernate для генерации схемы БД? Я бы просто создал сопоставления для своих классов, чтобы они соответствовали существующей схеме БД?

Я не знаю, можно ли указать в вашем отображении NHibernate, что первичный ключ должен быть в кластеризованном индексе и т. Д., Поскольку это довольно специфично для СУБД. Я предполагаю, что понятие кластеризованных индексов весьма специфично для SQL Server.

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