Индивидуальное сопоставление NHibernate, где все поля отображаются на свойства в одном классе - PullRequest
1 голос
/ 04 ноября 2010

У меня есть ситуация, когда база данных имеет взаимно-однозначное отношение между двумя таблицами, которые вместе четко представляют одну и ту же логическую сущность.

Я хотел бы сопоставить эти таблицы одному и тому же классу и иметь свойства карты классов для полей из ОБА таблиц. (Т.е. вместо того, чтобы один класс составлял другой).

Итак, если таблицы выглядят следующим образом:

Таблица Foo Столбцы: Id (PK), Описание, FavouriteCrispFlavour

Таблица Столбцы: Id (PK), NumberOfArms, EyeColour

Я бы хотел, чтобы мой класс выглядел следующим образом:

public class FooBar
{
  public virtual int Id {get;set;)
  public virtual string Description {get;set;)
  public virtual CrispFlavour FavouriteCrispFlavour {get;set;)
  public virtual int NumberOfArms {get;set;)
  public virtual EyeColour EyeColour {get;set;)
}

Возможно ли это отображение в NHibernate?

Ответы [ 2 ]

2 голосов
/ 04 ноября 2010

Да, это называется объединением. Элемент <join> с атрибутом table используется для создания объекта из нескольких таблиц, например:

<class name="MyClass">
  ...
  <join table="otherTable">
    <key column="MyClass_Id"/>
    <property name="propInOtherTable" />
  </join>
</class>

Полное (и лучшее) описание см. В документации NHibernate в сопоставлениях соединений .

0 голосов
/ 04 ноября 2010

Да, я полагаю, вам просто нужно указать соединение в HQL.

...