1

我在让 NH 持久化我的对象图时遇到了一些麻烦。

我有(类似的)这个:

/*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 并将 Parent.LastEvent 设置为新的事件。

当我告诉 NH 保存父对象时,我收到一个关于需要首先保存的瞬态对象的错误。我假设它是因为 Parent 和 Event 之间的关联尚不清楚。

SQL 需要采用的方式是使用 null LastEvent 插入 Parent,然后插入 Event,然后更新 Parent.LastEvent。

那么我如何让 NH 做到这一点呢?

4

1 回答 1

0

如果没有看到您的映射模式,我将不得不猜测。

你在级联你的更新吗?从参考

要保存或更新关联对象图中的所有对象,您必须

  • Save()、SaveOrUpdate() 或 Update() 每个单独的对象或
  • 使用 cascade="all" 或 cascade="save-update" 映射关联对象。

假设您还没有这个,将 cascade="all" 或 cascade="save-update" 添加到标记为 inverse="true" 的一侧是否可以解决问题?

于 2009-02-19T21:27:53.693 回答