我有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 .....
映射
public class CustomerMap : ClassMap<Customer> {
public CustomerMap()
{
WithTable("CUSTOMER");
Id(x => x.CustomerID, "CUSTOMER_ID");
Map(x => x.Name, "NAME");
}
}
我需要手动处理CustomerID属性的分配。例如,我使用CustomerID = 777创建了新客户,并将其命名为“stackoverflow”。
当我调用方法Session.SaveOrUpdate(customer)时; 我希望NHibernate像这样生成SQL:
INSERT INTO [CUSTOMER] ([CUSTOMER_ID] ,[NAME]) VALUES (777,'stackoverflow')
不幸的是我收到了错误。
这里的主要问题是Nhibernate试图为我生成ID。但我想用777完全保存我的实体。
我认为应该有另一种方式为Id()设置映射,这样我就可以做我想做的事。
请帮忙。
答案 0 :(得分:2)
根据您的NHibernate映射(流利或hbm)的方式,您可以设置ID属性以手动分配ID。我相信默认是让服务器分配id。