首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不正确字段上的NHibernate连接

不正确字段上的NHibernate连接
EN

Stack Overflow用户
提问于 2011-05-10 07:30:58
回答 2查看 350关注 0票数 1

我对Nhibernate非常陌生,我知道我的问题是什么,但是不确定如何修复它。

问题:用户是通过EmployeeID而不是UserID连接到员工的。这引起了一些问题,因为它带来了不正确的细节。

代码语言:javascript
复制
Employee.hbm.xml
<many-to-one name="User" unique="true" column="UserID" />

User.hbm.xml
<one-to-one name="Employee" foreign-key="EmployeeID" class="Employee" lazy="false" />

Employee.cs
public virtual int EmployeeID { get; set; }
public virtual User User { get; set; } - This is UserID within the actual database
public virtual string EmailAddress { get; set; }

User.cs
public virtual int UserID { get; set; }
public virtual string Username { get; set; }
public virtual string Title { get; set; }
public virtual string Forename { get; set; }
public virtual string Surname { get; set; }
public virtual Employee Employee { get; set; }

上面是别人编码的东西,我正试着修复它。我试着改变

代码语言:javascript
复制
<one-to-one name="Employee" foreign-key="UserID" class="Employee" lazy="false" />

然而,这仍然会引起问题。

我是不是遗漏了什么?谢谢您的帮助:-)

克莱尔

更新

我希望通过一对一的方式,它将加入UserID,然而它仍在加入EmployeeID。有人有其他想法吗?再次多谢:-)

代码语言:javascript
复制
Employee.hbm.xml
<one-to-one name="User" foreign-key="UserID" class="User" lazy="false" />

User.hbm.xml
<one-to-one name="Employee" foreign-key="UserID" class="Employee" lazy="false" />
EN

回答 2

Stack Overflow用户

发布于 2011-05-10 08:14:39

您不应该在 one-to-one 映射中指定任何列名,因为该信息是关系另一端many-to-one映射的一部分。

为了解决您的问题,您应该从foreign-key实体的one-to-one映射中删除User属性:

代码语言:javascript
复制
<one-to-one name="Employee" class="Employee" lazy="false" />

NHibernate将使用在Employee实体上定义的many-to-one映射中的信息来构建Employee语句。

注意到,如果一个Employee总是有一个与它相关联的User (即Employee.User属性永远不能是null),那么您应该通过添加constrained属性在one-to-one映射中说明这个事实:

代码语言:javascript
复制
<one-to-one name="Employee" class="Employee" constrained="true" lazy="false" />

相关资源:

  • NHibernate映射-
票数 1
EN

Stack Overflow用户

发布于 2011-06-09 10:10:35

我会在这里使用多对一的关系,因为我知道您可能希望合并用户帐户,而一对一可能会在将员工记录移动到合并用户时造成问题。

如果您认为用户可以拥有多个员工记录,那么这就避免了这个问题。

你有没有尝试过这样的方法:

Employee.hbm.xml

User.hbm.xml

http://ayende.com/blog/3938/nhibernate-mapping-many-to-one

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5946645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档