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

 首先出现一个错误,说更新Corporation时出错,日期无效。跟踪得知是Corporation的一个标记为非空的日期,数据库里却是空的。从nUnit中很明示的看到Corporation是被update了,可我的代码里并没有update语句,以为是save(page)时引起的,查遍Homepage对象并没有属性是Corporation呀。修改代码发现更玄,执行一次Select,直接Commit就能引来一次Update(corporation),不理我代码里没有任何更新语句。

到数据库中将那个非空日期字段都填上值,再运行测试,Corporation的update语句就再不出现了。看来NHibernate实在是聪明,汗!

你可能感兴趣的:(Hibernate)