代码大意
parent p = new parent
p.id =1;child c = new child
c.id=2
c.parent =p
p.child.add(c);session.save(p)生成SQL操作
NHibernate: INSERT INTO 创建父
NHibernate: UPDATE  更新子
报错。如果主键是GUID实体自行创建的话就没问题,都是insert 是什么原因?

解决方案 »

  1.   

    就是一对多的关联  
             TestParent p = new TestParent(); 
             p.ID = "p1";
             p.Name = "ppp";         TestChild c = new TestChild();
             c.ID = "c1";
             c.Name = "ccc";
             
             //建立关系
             c.TestParent = p;
             p.AddTestChild(c);         srv.TestDAO.Session.Save(p);执行的SQL 为:
    NHibernate: INSERT INTO Northwind.dbo.Test_Parent (name, id) VALUES (@p0, @p1); @p0 = 'ppp', @p1 = 'p1'
    NHibernate: UPDATE Northwind.dbo.Test_Child SET name = @p0, p_id = @p1 WHERE id = @p2; @p0 = 'ccc', @p1 = 'p1', @p2 = 'c1'nhibernate 将child对象,没判断出是新建的,而是根据ID去更新了。如果,主键配置为 generator class="guid" 或者 自增型 就不会出现这个问题。
      

  2.   

    http://www.cnblogs.com/maplye/archive/2006/07/04/442333.html
    刚查到一个,情况一样的,描述的更清楚一些。是不是一对多关联的,不能从实体外面赋主键值?
      

  3.   

    是不是你的类对应的XML文件属性不对呀