2010-07-13 38 views
0

当我检索父对象时,子对象的ID并不总是可预测的。例如,有时它被设置为0(零),有时是实际值,有时是-1。NHibernate子对象的ID问题

为什么?

我怎样才能解决这个问题?

代码和映射文件请参阅this旧的问题从我。

+0

你能提供一个代码示例吗?这实际上取决于您如何加载子实体(懒惰与渴望)以及ID字段映射到的内容。 – 2010-07-13 19:09:45

+0

加载一些代码,以便我们可以帮助您... – gillyb 2010-07-14 08:46:35

+0

代码和映射文件请参阅更新中提供的链接。 – anonymous 2010-07-14 08:48:11

回答

0

你的老师和老师的详细设置不同。

一个是多对一的,另一个是一对一的。

1

考虑到SQL Server的默认标识设置从来没有设置为0或-1的值有些可疑。

此外,由于TeacherDetail实际上是Teacher的补充/同步实体,为什么TeacherDetail的附加ID?你可以映射一个主要的外键在nhibernate

0

我会说你的前提是不正确的。

单个老师只有一个细节,因此没有多对一的细节。这只是一个财产,因为在老师有一个TeacherDetail的财产。

无论哪种方式,TeacherDetailsMapping都没有多对一的方式......两位老师永远不会分享相同的细节。

修复不正确的映射和你的问题,不良映射的结果将消失。

+0

我不知道您是否知道,专利方面的一对一关系被映射为多对一且唯一设置为true。看到这个:http://nhforge.org/wikis/howtonh/lazy-loaded-one-to-one-with-nhibernate.aspx – anonymous 2010-07-22 13:47:01

+1

也许你很清楚你想做什么会有帮助。这是一种解决方法'技巧',不是标准做法。 不确定要告诉你什么,我敢肯定你可以将它映射为“更好”。 – 2010-07-22 17:35:37

+0

@Mirage这是映射一对一的方式;一边是多对一的地图 – Jaguar 2010-07-23 06:07:12