关系在nhibernate中不起作用

时间:2014-06-25 17:04:34

标签: c# sql nhibernate fluent-nhibernate

我正在使用流利的NHibernate。映射在vb类中完成。朋友表(类)的映射代码是

Map(Function(x) x.FriendID)

References(Function(x) x.UserID_friendID).Column("FriendID")

当代码中的这两行都出现脱水错误时。如果我删除引用行,则正确插入表中的值。但后来关系不起作用。如果删除map(函数**)行然后关系工作,但在插入时朋友表中的FriendID列保持为null。请指导我错过或做错了以实现这两种关系,并将friendid保存在朋友表中。我也试过.inverse()但结果相同。

1 个答案:

答案 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不是很好......