我正在构建一个小型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);
可悲的是,没有任何东西得救。为什么呢?
谢谢!
答案 0 :(得分:1)
如果您的一对多映射为反向,则另一方需要知道父对象。所以你的Votes类需要一个Profile的引用(映射为多对一)。
您还必须确保在代码中设置了对父对象的引用。
附加说明:您的代码示例没有多大意义。如果您创建新的配置文件,则必须调用Session.Save而不是Session.Update。