C# 用nhibernate抽象列名

C# 用nhibernate抽象列名,c#,nhibernate,nhibernate-mapping,C#,Nhibernate,Nhibernate Mapping,我对nhibernate映射有问题。我使用nhibernate 3.2的代码映射 namespace NhibernateLiaisonBase { [Serializable] public class Cessions { #region Public Properties public virtual int IdCessions { get; set;

我对nhibernate映射有问题。我使用nhibernate 3.2的代码映射

namespace NhibernateLiaisonBase
{
    [Serializable]
    public class Cessions
    {
        #region Public Properties
        public virtual int IdCessions
        {
            get;
            set;
        }

        public virtual DateTime CessionsDate
        {
            get;
            set;
        }
    #endregion
    }

    public class CessionsMap : ClassMapping<Cessions>
    {
        public CessionsMap()
        {
            Id<int>(x => x.IdCessions, map => map.Column("SCES_ID"));
            Property<DateTime>(x => x.CessionsDate, map => map.Column("SCES_DATE"));
            Table("SCES_CESSIONS");
        }
   }
}
名称空间NhibernateLiaisonBase
{
[可序列化]
公营分租
{
#区域公共财产
公共虚拟int权限
{
得到;
设置
}
公共虚拟日期时间SessionsDate
{
得到;
设置
}
#端区
}
公共类CessionsMap:ClassMapping
{
公共割让地图()
{
Id(x=>x.Id权限,map=>map.Column(“SCES_Id”);
属性(x=>x.CessionsDate,map=>map.Column(“SCES_日期”);
表(“SCE特许经营”);
}
}
}

使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用NHibernate.Mapping.ByCode.Conformist;
名称空间NhibernateLiaisonBase
{
[可序列化]
公共类转让协议
{
#区域公共财产
公共虚拟int IDcessionsAlignes
{
得到;
设置
}
公共虚拟整数量化访问对齐
{
得到;
设置
}
公共虚拟分保
{
得到;
设置
}
#端区
}
公共类CessionAlignesMap:类映射
{
公共特许经营协议
{
Id(x=>x.IdCessionsLignes,map=>
{
生成器(NHibernate.Mapping.ByCode.Generators.Identity);
});
属性(x=>x.QuantiteAccessionsAlignes,map=>map.Column(“SCESL_QTE”);
manytone(x=>x.cessions,map=>map.Column(“SCESL_SCESID”);
表(“SCESL_CessionsAlignes”);
}
}
}
使用它时,将SCESL_SCESID列重命名为SCESL_CESSIONSLIGNES表中的IdCessionsLignes。我生成了hbm.xml文件,结果如下:




有什么想法吗?

我想你忘了在身份地图中调用
列了:

Id<int>(x => x.IdCessionsLignes, map =>
{
    map.Column("SCESL_SCESID")
       .Generator(NHibernate.Mapping.ByCode.Generators.Identity);
});
Id(x=>x.IdCessionsLignes,map=>
{
映射列(“SCESL_SCESID”)
.Generator(NHibernate.Mapping.ByCode.Generators.Identity);
});

如果我运行代码,它将生成一个alter表,并将SCESL\u SCESID列重命名为SCESL\u CESSIONSLIGNES中的IdCessionsLignes。我只需要将该列重命名为我的业务对象
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" namespace="NhibernateLiaisonBase" assembly="NhibernateLiaisonBase" xmlns="urn:nhibernate-mapping-2.2">
  <class name="Cessions" table="SCES_CESSIONS">
    <id name="IdCessions" column="SCES_ID" type="Int32" />
    <property name="CessionsDate" column="SCES_DATE" />
  </class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" namespace="NhibernateLiaisonBase" assembly="NhibernateLiaisonBase" xmlns="urn:nhibernate-mapping-2.2">
  <class name="CessionsLignes" table="SCESL_CESSIONSLIGNES">
    <id name="IdCessionsLignes" type="Int32">
      <generator class="identity" />
    </id>
    <property name="QuantiteCessionsLignes" column="SCESL_QTE" />
    <many-to-one name="cessions" column="SCESL_SCESID" />
  </class>
</hibernate-mapping>
Id<int>(x => x.IdCessionsLignes, map =>
{
    map.Column("SCESL_SCESID")
       .Generator(NHibernate.Mapping.ByCode.Generators.Identity);
});