日期:2014-05-20  浏览次数:20480 次

保存A实体会莫名其妙保存到B实体。。这是怎么回事啊!!Nhibernate
如题:求助:
C# code

 [Serializable]
    public class A
    {
          /// <summary>
        ///唯一标识
        /// </summary>
        public virtual string ID
        {
            get;
            set;
        }
         /// <summary>
        ///姓名
        /// </summary>
        public virtual string Name        {
            get;
            set;
        }


     }
    
    [Serializable]
    public class B
    {
          /// <summary>
        ///唯一标识
        /// </summary>
        public virtual string ID
        {
            get;
            set;
        }
         /// <summary>
        ///姓名
        /// </summary>
        public virtual DateTime LastTime
       {
            get;
            set;
        }
       /// <summary>
        ///姓名
        /// </summary>
        public virtual string Name        {
            get;
            set;
        }


     }


XML code

<?xml version="1.0"  encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
    <class name="Domain.A, Domain" table="A">
        <id name="ID" column="ID" type="string">
                                    <generator class="uuid.hex" />
          </id>              
        <property name="Name"  />
    <property name="LastTime"  />
        </class>
</hibernate-mapping>



<?xml version="1.0"  encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
    <class name="Domain.B, Domain" table="B">
        <id name="ID" column="ID" type="string">
                                    <generator class="uuid.hex" />
          </id>              
         <property name="LastTime"  />
         <property name="Name"  />

        </class>
</hibernate-mapping>



C# code

protected void btnSave_Click(object sender, EventArgs e)
{
   A a = new A();
   a.Name = GetB();
   UtilityDao.SaveOrUpdate(a);//保存A实体
}
private string GetB()
{
   string result = string.Empty;
   B b = service.GetBMethod();
   if(b != null)
   {
     result = b.Name;
   }
   return result;
}




实体类和映射文件如上。。。当我点击按钮保存的时候。保存的是A实体的时候用NhibernateProfiler查看session怎么会出现更新B实体的脚本 然后报错"错误:“SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间。” 出现这种问题多半是因为你插入或者更新数据库时datetime字段值为空默认插入0001年01月01日造成datetime类型溢出。 
"




------解决方案--------------------
不懂,帮顶
------解决方案--------------------
可以去博客园上问问李永京,他对NHIBERNATE很熟悉。