2011-03-06 56 views
0

也许我刚刚设计了这个错误,如果是这样我很乐意到弓和它掠夺另一种方式......NHibernate主键是1-1映射吗?

我现在有2台这样的,它有一个共同的主键:

人 - ID(PK),姓名,CREATED_DATE,...

person_details - 为person_id(PK),年龄,身高,...

现在的人被创建,一个人只能有一套细节。所以最初我认为在映射person_details时,我会将PK分配给它,因为它将由该人员生成。

现在我对如何在数据库中创建这个数据的第一个实例感到有点困惑,因为当我创建一个Person模型,其中包含PersonDetails模型的实例时,此时都不会有Id ,因为它们还没有被创建。那么如何告诉PersonDetails模型在创建时从父模型中获取其Id?

我只是会生气或有一个简单的映射,我需要在人模型中做,告诉它从它自己的ID插入时推断PersonDetails Id?我最终需要Person_Id在PersonDetails上,因为它们是由Ajax在外部更新的人,如果在初始创建之后将会进行更改...

+0

考虑到这一点后,似乎一对一的映射可能不是最好的方式来做到这一点,即使在数据库中他们是一对一映射......所以有更好的方法来结构呢?最终,我需要能够通过ajax独立更新细节(以及其他一对一的风格关系),所以他们需要有一些关系,这样我可以单独保存它们而不必保存整个人,除非这是唯一的方式去做... – Grofit 2011-03-06 15:34:23

回答

1

如果这些表共享一个PK(我假设它是发起人) ,那么你有一个one-to-one,其中一个人有一个细节,或一个join,其中一个人有年龄,身高等,他们被映射到一个不同的表。

刚刚阅读两章,他们都有例子。

+0

嗨,阅读那些已经,但对我来说问题是,一个人模型包含ALOT信息,如果我有PersonDetails模型(和其他模型)的人,那么该模型有一个引用回到父我会传递大量关于回发的数据,因为我目前使用MVC。这就是为什么我想要在模型中有PersonId与Person相对的原因。我知道他们会被延迟加载,所以它不像实际上会有大量的数据浮动,但我敢肯定,mvc回发会有吨的空数据...将不得不检查 – Grofit 2011-03-06 15:15:58

+0

问题是试图修改你的HTTP发布的域*模型。改为创建一个* Presentation *模型。 – 2011-03-06 16:07:30

+0

我原本打算做这件事,然后写一个mapper去往,但我认为没有意义的是,如果我可以让NHibernate像我想要的那样行事...... – Grofit 2011-03-06 17:40:14