[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实在是聪明,汗!

posted @ 2007-03-09 17:13  生命体验之kevin-Y  阅读(1022)  评论(0编辑  收藏  举报