我正在使用流利的NHibernate。映射在vb类中完成。朋友表(类)的映射代码是
Map(Function(x) x.FriendID)
References(Function(x) x.UserID_friendID).Column("FriendID")
当代码中的这两行都出现脱水错误时。如果我删除引用行,则正确插入表中的值。但后来关系不起作用。如果删除map(函数**)行然后关系工作,但在插入时朋友表中的FriendID列保持为null。请指导我错过或做错了以实现这两种关系,并将friendid保存在朋友表中。我也试过.inverse()但结果相同。
答案 0 :(得分:0)
我会尝试在C#中解释(令人惊讶的是,VB并不像我预期的那样容易阅读......)。从上面的映射我猜你的实体看起来像这样:
Friend Friend { get; set; } // the property UserID_friendID
int FriendID { get; set; }
对于NHibernate来说这是好的,但肯定的是,两个属性都确实针对同一列"FirendID"
。对于阅读,我们没有任何问题,两个值都可以填充,但是对于写作,我们只能(到DB) 一个值(一列)< / em>的。映射(在C#中)将是这样的:
References(x => x.Friend).Column("FriendID")
Map(x => x.FriendID)
.Not.Insert()
.Not.Update()
现在,当INSERT或UPDATE时,NHibernate将正常工作,并为SELECT提供两个值。
注意:在创建过程中,通过上述映射,我们必须分配Reference
朋友,因为此值由写入操作处理。确定价值类型FriendID不是很好......