【发布时间】:2011-11-09 16:59:14
【问题描述】:
我有一个带有复合键的表,其中一部分是一个身份字段。 Identity 字段显然是后来添加的,因为有 1000 多个位置重复标识,因此依靠复合键的第二部分来提供唯一性。这是表声明:
CREATE TABLE [dbo].[tblSaveCommissions](
[SaveTransID] [int] NOT NULL,
[CommID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[AccountNumber] [varchar](40) NULL,
... (extra fields)
CONSTRAINT [PK_tblSaveCommissions] PRIMARY KEY CLUSTERED
(
[SaveTransID] ASC,
[CommID] ASC)
)
FluentNHibernate 映射如下所示(缩写):
public class SaveCommissionMap : ClassMap<SaveCommissionEntity>
{
public SaveCommissionMap()
{
Table("tblSaveCommissions");
CompositeId()
.KeyProperty(x => x.Id, "CommID")
.KeyProperty(x => x.SaveTransactionId, "SaveTransId");
Map(x => x.AccountNumber);
References(x => x.SaveTransaction)
.Column("SaveTransId").Not.Insert().Not.Update();
}
现在当我尝试插入记录时,出现以下错误:
System.Data.SqlClient.SqlException : Cannot insert explicit value for identity column in table 'tblSaveCommissions' when IDENTITY_INSERT is set to OFF.
如何使用映射来完成这项工作?
【问题讨论】:
标签: nhibernate identity composite-key