2010-02-03 16 views
2

我有表CUSTOMER其中CUSTOMER_ID是主鍵。我想生成包括我的主鍵(不生成)NHibernate的插入。如何爲此Id映射列?

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

映射

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

我需要處理手動CustomerID屬性的分配。例如,我使用CustomerID = 777創建了新的Customer並命名爲「stackoverflow」。

當我打電話方法Session.SaveOrUpdate(客戶); 我想NHibernate的生成我這樣的SQL:

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

不幸的是我得到的錯誤。

主要這裏的問題是,NHibernate的嘗試爲我生成ID。但我想救我的實體正好與777

我覺得應該有辦法的ID建立映射()一些另闢蹊徑所以這將讓我做我想做的。

請幫忙。

回答

2

取決於你怎麼做你的NHibernate mappints(流利或HBM),你可以設置你的ID屬性手動分配的ID。我相信默認是讓服務器分配ID。

+0

感謝。 回答爲我的問題是手動設置我的ID屬性與添加GeneratedBy.Assigned(); Like here: Id(x => x.CustomerID,「CUSTOMER_ID」) .GeneratedBy.Assigned(); 我認爲我的情況比較特殊。 – 2010-02-03 12:32:33

相關問題