具有DB2 GeneratedBy标识的FNH映射

时间:2013-04-01 14:50:14

标签: db2 identity fluent-nhibernate-mapping

我正在尝试使用身份密钥字段映射表。 当我尝试保存时,我收到错误 SQL0803指定重复键值

INSERT INTO libpjk / Audit(AuditId,AuditDate,UserId,Keys,ValBefore,ValAfter,FieldId)VALUES(默认,?,?,?,?,?,?)

我认为AuditId不应该出现在字段列表中,默认值也不应该出现在那里。我只是不知道该怎么做。

用于表创建的SQL:

CREATE TABLE libpjk.Audit (
AuditId integer not null GENERATED ALWAYS AS IDENTITY 
   (START WITH 1, INCREMENT BY 1),
AuditDate timestamp not null,
UserId char(10)    not null,
FieldId integer    not null,
Keys varchar(50)   not null,
ValBefore varchar(50),
ValAfter  varchar(50),
CONSTRAINT libpjk.pk_Audit PRIMARY KEY(FieldId))

以下是AuditId在Audit类中的定义:

<Required()> Public Overridable Property AuditId As Integer

这是我的映射:

MyBase.New()
Table("libpjk/Audit")
LazyLoad()
Id(Function(x) x.AuditId).Column("AuditId").GeneratedBy.Identity()
References(Function(x) x.AuditField).Column("FieldId")
Map(Function(x) x.Timestamp).Column("AuditDate").Not.Nullable()
Map(Function(x) x.UserId).Column("UserId").Not.Nullable()
Map(Function(x) x.Keys).Column("Keys").Not.Nullable()
Map(Function(x) x.Value_Before).Column("ValBefore")
Map(Function(x) x.Value_After).Column("ValAfter")

感谢您的帮助

0 个答案:

没有答案