Nhibernate - Cascading inverse不会被保存

时间:2011-04-18 10:57:18

标签: nhibernate

我正在构建一个小型Web应用程序并使用nhibernate作为我的DAL。 我有以下情况:

Father class - Profile Class:
{
    long ID
    string Name
    [A whole bunch of info]
    List<Voting> Votes
}

Son class - Votes Class:
{
     long id
     short rating
}

这是我的映射:

HasMany(o => o.Votes)
              .LazyLoad()
              .AsBag()
              .Inverse()
              .Cascade.All();

我希望发生以下情况: 用户可以为个人资料评分,然后我需要做的只是在个人资料本身上调用更新,而不是在每个投票上发送保存电话。

这就是我目前正在做的事情:

var myProfile = new Profile();
myProfile.Rate(1,2);
myProfile.Rate(5,2);
myProfile.Rate(20,2);
Session.SaveOrUpdate(myProfile);

可悲的是,没有任何东西得救。为什么呢?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您的一对多映射为反向,则另一方需要知道父对象。所以你的Votes类需要一个Profile的引用(映射为多对一)。

您还必须确保在代码中设置了对父对象的引用。

附加说明:您的代码示例没有多大意义。如果您创建新的配置文件,则必须调用Session.Save而不是Session.Update。