[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
当我把B实体的时间类型改为可空类型就不会出现更新B实体的脚本了!!!!
#2
不懂,帮顶
#3
没人来回答啊 杯具啊
#4
可以去博客园上问问李永京,他对NHIBERNATE很熟悉。
#5
CSDN上也有人知道的啊!!!求助啊
#6
郁闷啊!!!
#1
当我把B实体的时间类型改为可空类型就不会出现更新B实体的脚本了!!!!
#2
不懂,帮顶
#3
没人来回答啊 杯具啊
#4
可以去博客园上问问李永京,他对NHIBERNATE很熟悉。
#5
CSDN上也有人知道的啊!!!求助啊
#6
郁闷啊!!!