[NHibernate]执行两次update?查询过的对象都要update?
先看代码
Entity.Corporation corpOne = corpLoc.SelectOne("62821666");
Entity.HomePage page = new Mag.Entity.HomePage();
page.Area = corpOne.AreaCode;
page.ContactMan = "";
page.Description = "";
try
{
conn.BeginTransaction();
conn.Save(page);
conn.CommitTransaction();
}
catch (System.Exception ex)
{
conn.Rollback();
throw ex;
}
Entity.HomePage page = new Mag.Entity.HomePage();
page.Area = corpOne.AreaCode;
page.ContactMan = "";
page.Description = "";
try
{
conn.BeginTransaction();
conn.Save(page);
conn.CommitTransaction();
}
catch (System.Exception ex)
{
conn.Rollback();
throw ex;
}
首先出现一个错误,说更新Corporation时出错,日期无效。跟踪得知是Corporation的一个标记为非空的日期,数据库里却是空的。从nUnit中很明示的看到Corporation是被update了,可我的代码里并没有update语句,以为是save(page)时引起的,查遍Homepage对象并没有属性是Corporation呀。修改代码发现更玄,执行一次Select,直接Commit就能引来一次Update(corporation),不理我代码里没有任何更新语句。
到数据库中将那个非空日期字段都填上值,再运行测试,Corporation的update语句就再不出现了。看来NHibernate实在是聪明,汗!