2009-02-19 27 views
1

我有一些麻烦让NH坚持我的对象图。NHibernate - 这是什么样的关联?

我有(像)这样的:

/*Tables*/ 
TABLE Parent 
    ParentID PK 
    LastEventID NULL 

TABLE Event 
    EventID PK 
    ParentID FK NOT NULL 

//Model Classes 

public class Parent 
{ 
    public List<Event> Events; //Inverse 

    //Denormalized bit 
    public Event LastEvent; //not inverse 

} 

public class Event 
{ 
    public Parent Parent; //Makes the association up there Inverse 
} 

我创建一个新的父,创造了新的事件,将新事件 到Parent.Events和设置父。最后的事件到新的事件。

当我告诉NH保存父对象时,首先得到一个关于临时对象 的错误。我认为它是因为Parent和Event之间的联系 不清楚。

SQL需要去的方式是插入带有空的 LastEvent的Parent,然后插入Event,然后更新Parent.LastEvent。

那么我该如何获得NH来做到这一点?

回答

0

没有看到您的映射架构,我不得不猜测。

您是否在级联您的更新?从reference

要在相关对象的图形保存或更新所有对象,则必须

  • 保存(),saveOrUpdate()方法或Update()每个单独的对象或
  • 使用cascade =“all”或cascade =“save-update”映射关联的对象。

假设你已经没有这个,不添加级联=“全”或级联=“保存更新”到一边,并且标明inverse =“true”来解决这个问题?

+0

是的,这有帮助。事实证明,真实情况更加复杂(这是对问题区域的简化)。紧接着的问题就是通过您所描述的来解决的。 – brendanjerwin 2009-02-19 21:34:08