NHibernate map join table with extra column

NHibernate map join table with extra column

我有 3 个 tables:具有 PK IdWorkspace 和其他列的工作区,具有 PK IdLanguage 和其他列的语言,并加入具有多个 PK(IdWorkspace FK 和 IdLanguage FK)和外部列的 table WorkspaceFooter字符串 面额。我找不到在 Nhibernate 中映射这些内容的方法,这是一种可行的方法。

.hbm.xml文件应该怎么写?我应该在 Workspace 中映射什么?一个集合,一个 WorkspaceFooter 列表等等?

请记住,出于某种原因,Workspace 中指向 WorkspaceFooter 的关系需要反向 ="true"。 Workspace 中的更新也必须强制 WorkspaceFooter 中的更新。

提前致谢。

您需要明确:

  • 您需要的 class 模型(源自业务逻辑,而不仅仅是数据库模型)
  • 你是否真的需要双向关系

你可以:

  • 将其映射为列表中的独立实体(这是需要最多管理代码的解决方案),
  • 将其映射为具有面额和多对一语言的复合元素。为此,它还在 C# 中使用特定的 class。可能是最直接的解决方案。
  • 将其映射为地图(C# 中的字典),其中面额是关键(假设它在同一工作区内是唯一的,并且是访问语言的典型方式),
  • 也许您可以将其映射为列表并使用过滤器仅访问特定面额的数据。我没有使用过滤器的经验,我不知道你会遇到什么样的麻烦。