Я хочу сгенерировать INSERT, который включает в себя мой первичный ключ (не сгенерированный) NHibernate. Как сопоставить столбец Id для этого? - PullRequest
2 голосов
/ 03 февраля 2010

У меня есть таблица CUSTOMER, где CUSTOMER_ID - первичный ключ.

Таблица

CREATE TABLE [CUSTOMER](
    [CUSTOMER_ID] [int] NOT NULL,
    [START_DATE] [varchar(30)] NOT NULL,
CONSTRAINT [PK_CUSTOMER] PRIMARY KEY CLUSTERED ( [CUSTOMER_ID] ASC .....

Mapping

public class CustomerMap : ClassMap<Customer> {
    public CustomerMap()
    {
        WithTable("CUSTOMER");
        Id(x => x.CustomerID, "CUSTOMER_ID");
        Map(x => x.Name, "NAME");
    }
}

Мне нужно обработать присвоение свойства CustomerID вручную. Например, я создал нового Customer с CustomerID = 777 и именем «stackoverflow».

Когда я вызываю метод Session.SaveOrUpdate (customer); Я хочу, чтобы NHibernate генерировал мне SQL следующим образом:

INSERT INTO [CUSTOMER] ([CUSTOMER_ID] ,[NAME]) VALUES (777,'stackoverflow')

К сожалению, я получаю ошибки.

Основная проблема заключается в том, что Nhibernate пытается создать для меня ID. Но я хочу сохранить свою сущность точно с 777.

Я думаю, что должен быть способ настроить отображение для Id () другим способом, так что это позволит мне делать то, что я хочу.

Пожалуйста, помогите.

1 Ответ

2 голосов
/ 03 февраля 2010

В зависимости от того, как вы делаете свои NHibernate mappints (свободно или hbm), вы можете настроить свойство ID для ручного назначения идентификатора. Я считаю, что по умолчанию сервер разрешает назначать идентификатор.

...