Свободный NHibernate - запрос по производному классу - PullRequest
3 голосов
/ 03 октября 2011

Допустим, у меня есть два класса:

public class A
{
  public virtual int Id { get; set; }
  public virtual Object1 Obj { get; set; }
}

public class B : A
{
  public new virtual Object2 Obj { get; set; }
}

Я использую Fluent NHibernate и создал два разных сопоставления для двух классов. Однако, когда я пытаюсь сделать запрос к классу A в моем хранилище, FNH находит и класс B, и A, что имеет смысл, поскольку оба являются A.

Пример (этот критерий будет запрашивать как A, так и B):

public List<T> GetByName(string name)
{
  return Session.CreateCriteriaOf<A>.Add(Restrictions...);
}

При написании CreateCriteriaOf<A> я хочу запрашивать только через A, а не B. Как я могу решить мою проблему?

1 Ответ

3 голосов
/ 03 октября 2011

Я думаю, вам лучше создать дерево наследования, в котором A и B наследуются от общего (абстрактного) базового типа. Тогда NHibernate может провести различие по столбцу дискриминатора .

Конечно, ваша модель данных должна соответствовать этому, поэтому я надеюсь, что ваша модель никак не прописана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...