Nhibernate在插入时添加了重复列

Nhibernate在插入时添加了重复列,nhibernate,fluent-nhibernate,nhibernate-mapping,fluent-nhibernate-mapping,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,Fluent Nhibernate Mapping,我用的是流利的NHibernate。我有一个名为Audit的类,它具有ItemID属性。每次我想保存该表中的任何内容时,都会出现此错误 错误消息: 在INSERT的SET子句或列列表中多次指定列名“itemid”。一个列不能在同一子句中分配多个值。修改该子句以确保列只更新一次。如果此语句更新或向视图中插入列,则列别名可能会隐藏代码中的重复 课程 public class Audit : EntityBase { /********* ** Accessors ******

我用的是流利的NHibernate。我有一个名为Audit的类,它具有ItemID属性。每次我想保存该表中的任何内容时,都会出现此错误

错误消息: 在INSERT的SET子句或列列表中多次指定列名“itemid”。一个列不能在同一子句中分配多个值。修改该子句以确保列只更新一次。如果此语句更新或向视图中插入列,则列别名可能会隐藏代码中的重复

课程

public class Audit : EntityBase
{
    /*********
    ** Accessors
    *********/
    /// <summary>When the action was logged.</summary>
    public virtual DateTime Date { get; set; }

    /// <summary>The person who triggered the action.</summary>
    public virtual BasicUser User { get; set; }

    /// <summary>The name of the related group, used for filtering (e.g. idea, system-settings, site-editor)</summary>
    public virtual string ItemGroup { get; set; }

    /// <summary>The ID of the related entity.</summary>
    public virtual int ItemID { get; set; }

    /// <summary>The title of the related entity.</summary>
    public virtual LocalizableString ItemTitle { get; set; }

    /*********
    ** Public methods
    *********/
    /// <summary>Construct an instance.</summary>
    public Audit() { }
}
公共类审核:EntityBase
{
/*********
**访问者
*********/
///当操作被记录时。
公共虚拟日期时间日期{get;set;}
///触发动作的人。
公共虚拟基本用户{get;set;}
///用于筛选的相关组的名称(例如idea、系统设置、站点编辑器)
公共虚拟字符串项组{get;set;}
///相关实体的ID。
公共虚拟int ItemID{get;set;}
///相关实体的名称。
公共虚拟本地化字符串ItemTitle{get;set;}
/*********
**公共方法
*********/
///构造一个实例。
公共审计(){}
}
映射:

public class AuditMapper<T> : IEntityMapper<T>
    where T : Audit
{
    public virtual void ExtendDomainModel(IEntityMetadata<T> metadata)
    {
        metadata.MapTablePerClassHierarchy<Audit, T>("`ItemGroup`");

        if (!metadata.IsSubclass)
        {
            metadata.Map.ManyToOne(entity => entity.User, relation => relation.Column("`userid`"));
            metadata.Map.Property(c => c.ItemGroup, mapper =>
                    {
                        mapper.Insert(false);
                        mapper.Update(false);
                    });
            metadata.Map.Property(c => c.ItemID, mapper => mapper.Column("itemid"));
        }
        else
        {
            metadata.MapSubclass.ManyToOne(entity => entity.User, relation => relation.Column("`userid`"));
            metadata.MapSubclass.Property(c => c.ItemGroup, mapper =>
                    {
                        mapper.Insert(false);
                        mapper.Update(false);
                    });
            metadata.MapSubclass.Property(c => c.ItemID, mapper =>
                    {
                        mapper.Insert(false);
                        mapper.Update(false);
                    });
        }
    }
}
公共类AuditMapper:IEntityMapper
其中T:审计
{
公共虚拟空间ExtendDomain模型(IEntityMetadata)
{
metadata.MapTablePerClassHierarchy(`ItemGroup`');
如果(!metadata.IsSubclass)
{
metadata.Map.ManyToOne(entity=>entity.User,relation=>relation.Column(`userid`));
属性(c=>c.ItemGroup,mapper=>
{
mapper.Insert(false);
mapper.Update(false);
});
属性(c=>c.ItemID,mapper=>mapper.Column(“ItemID”);
}
其他的
{
metadata.MapSubclass.manytone(entity=>entity.User,relation=>relation.Column('userid`));
属性(c=>c.ItemGroup,mapper=>
{
mapper.Insert(false);
mapper.Update(false);
});
metadata.MapSubclass.Property(c=>c.ItemID,mapper=>
{
mapper.Insert(false);
mapper.Update(false);
});
}
}
}
SQL查询:

public class AuditMapper<T> : IEntityMapper<T>
    where T : Audit
{
    public virtual void ExtendDomainModel(IEntityMetadata<T> metadata)
    {
        metadata.MapTablePerClassHierarchy<Audit, T>("`ItemGroup`");

        if (!metadata.IsSubclass)
        {
            metadata.Map.ManyToOne(entity => entity.User, relation => relation.Column("`userid`"));
            metadata.Map.Property(c => c.ItemGroup, mapper =>
                    {
                        mapper.Insert(false);
                        mapper.Update(false);
                    });
            metadata.Map.Property(c => c.ItemID, mapper => mapper.Column("itemid"));
        }
        else
        {
            metadata.MapSubclass.ManyToOne(entity => entity.User, relation => relation.Column("`userid`"));
            metadata.MapSubclass.Property(c => c.ItemGroup, mapper =>
                    {
                        mapper.Insert(false);
                        mapper.Update(false);
                    });
            metadata.MapSubclass.Property(c => c.ItemID, mapper =>
                    {
                        mapper.Insert(false);
                        mapper.Update(false);
                    });
        }
    }
}

在[brainbank].[idealink.core.audit]([date]、[userid]、itemid、[itemtitle_key]、[itemtitle_original]、[itemid]、[ItemGroup])中插入值(@p0、@p1、@p2、@p3、@p4、@p5、'IdeaaAudit');选择SCOPE_IDENTITY()

我将在映射器中修复此问题

我变了

        metadata.Map.Property(c => c.ItemID, mapper => mapper.Column("itemid"));