保存A实体会莫名其妙保存到B实体。。这是怎么回事啊!!Nhibernate

时间:2022-09-20 10:13:33
如题:求助:

 [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 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>



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类型溢出。 
"


6 个解决方案

#1


引用楼主 allen_xu5320 的回复:
如题:求助:

C# code


 [Serializable]
    public class A
    {
          /// <summary>
        ///唯一标识
        /// </summary>
        public virtual string ID
        {
            get;
    ……

当我把B实体的时间类型改为可空类型就不会出现更新B实体的脚本了!!!!

#2


不懂,帮顶

#3


没人来回答啊  杯具啊

#4


可以去博客园上问问李永京,他对NHIBERNATE很熟悉。

#5


CSDN上也有人知道的啊!!!求助啊

#6


郁闷啊!!!

#1


引用楼主 allen_xu5320 的回复:
如题:求助:

C# code


 [Serializable]
    public class A
    {
          /// <summary>
        ///唯一标识
        /// </summary>
        public virtual string ID
        {
            get;
    ……

当我把B实体的时间类型改为可空类型就不会出现更新B实体的脚本了!!!!

#2


不懂,帮顶

#3


没人来回答啊  杯具啊

#4


可以去博客园上问问李永京,他对NHIBERNATE很熟悉。

#5


CSDN上也有人知道的啊!!!求助啊

#6


郁闷啊!!!