【发布时间】:2014-04-16 16:44:28
【问题描述】:
我最近在工作中继承了一个包含 NHibernate 的项目。我对它非常陌生,必须对其中一个映射进行修改。我已阅读文档here,但我仍然不确定如何执行此操作,或者我的理解/术语是否正确。
因此,鉴于下表结构,我需要一个可以获取项目名称的包:
User
UserID (PK)
ProjectUser
UserID (PK, FK User.UserID)
ProjectID (PK, FK Project.ProjectID)
Project
ProjectID (PK)
ProjectName
这是现有的包映射,它正确返回 ProjectID,但现在我试图了解如何修改它以返回 ProjectID 和 ProjectName:
<bag name="Projects" table="ProjectUser" lazy="true" inverse="true" cascade="save-update">
<key column="UserId"></key>
<many-to-many class="Project" column="ProjectID"></many-to-many>
</bag>
【问题讨论】:
-
当您说“我需要修改它以返回 ProjectID 和 ProjectName”时,您究竟是什么意思?如果您想查看属于特定用户的所有 ProjectName,您只需遍历该用户的项目集合并使用 Project.ProjectName。通常,您上面的关系将由 2 个类 User 和 Project 表示。用户有一个项目集合,项目有一个用户集合。您的示例中的中间表 ProjectUsers 没有映射到它的 C# 类。
-
是的,你是对的,请在下面的答案中查看我的评论。这是一个项目,基本上是在工作中向我抛出的,因为没有其他人有 MVC 经验,而我有零 NHibernate 经验,所以这主要是对多对多关系如何运作的误解。
标签: nhibernate orm nhibernate-mapping