首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nhibernate在insert上添加了重复列

Nhibernate在insert上添加了重复列
EN

Stack Overflow用户
提问于 2018-07-27 13:27:58
回答 1查看 313关注 0票数 0

我正在使用流利的NHibernate。我有一个名为审计的类,它具有ItemID属性。每次我想在那个表中保存任何东西时,请告诉我这个错误。

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

代码语言:javascript
复制
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() { }
}

映射:

代码语言:javascript
复制
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);
                    });
        }
    }
}

SQL查询:

idealink.core.audit值(@p0,@p1,@p2,@p3,@p4,@p5,'IdeaAudit');选择SCOPE_IDENTITY()

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-27 17:24:28

我在地图上解决了这个问题。

我改变了

代码语言:javascript
复制
        metadata.Map.Property(c => c.ItemID, mapper => mapper.Column("itemid"));

代码语言:javascript
复制
        metadata.Map.Property(c => c.ItemID, mapper =>
                {
                    mapper.Insert(false);
                    mapper.Update(false);
                });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51559014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档