我有一个以下的数据库方案设置,我不能真正改变。流利的NHibernate映射:一对一(或没有)
User
----
Id (primary key)
[Some simple properties...]
UserAdditionalData
------------------
Id (primary key)
[Some simple properties...]
USERID (foreign key to User)
很明显的是,User
表并没有真正有它是否链接到UserAdditionalData
记录的任何记忆,所以我不认为我可以在这里称这是一个真正的一个一对一映射因为他们也不会分享互斥的PK。
但是,实际上,我希望能够在User
对象上工作,例如检查它是否有UserAdditionalData
记录,如果是,请访问其属性。
我建立了我的BDO这样:
public class User
{
[Some simple properties...]
public virtual UserAdditionalData UserAdditionalData { get; set; }
}
public class UserAdditionalData
{
[Some simple properties...]
public virtual User User { get; set; } /* I have this here,
but I don't really ever
have to access it in this
direction */
}
我建立了我的映射,例如:
public UserMapping()
{
Table("USER");
[Some simple properties...]
HasOne(x => x.UserAdditionalData).Cascade.None();
}
public UserExtraMapping()
{
Table("USER_ADDITIONAL_DATA");
[Some simple properties...]
References(x => x.User, "USERID").Unique();
}
这一切编译,但是我看到我的UserExtra对象(当通过User对象访问时)始终为空。 我已经尝试了很多不同的方式去了解它,阅读了很多关于实现这个作为一对多。但是,我仍然无法使其工作。
任何帮助将非常感激。
谢谢!
[小UPDATE]:我只需要查询数据库,而不是保存到它,如果这是相关的任何方式。
'HasOne'和'References'设置你为我工作。SQL NHibernate生成的外观是否正确? – 2014-09-01 20:34:29