У меня есть 3 класса, как:
public class Animal
{
... all sort of data ...
}
public class Cat : Animal
{
... more data ...
public virtual int Size { get; set; }
}
public class Dog : Animal
{
... other data ...
public virtual int Size { get; set; }
}
Классы отображаются с использованием стратегии «таблица на иерархию» в hbm.xml, отображающей свойство Cat's Size, сопоставляемое со столбцом CatSize, а свойство Dog с DogSize
Следующие два запроса работают как положено:
From Cat o Where o.Size = 1
From Dog o Where o.Size = 1
Теперь я хочу запросить Animal для всех кошек, где Size = 1, и всех собак, где size = 1, объединяя два запроса выше, которые я получаю:
From Animal Where o.Size = 1 Or o.Size = 1
Это, очевидно, не делает то, что я хочу, как я могу сказать NHibernate, что первым Size является Cat.Size, а вторым - Dog.Size (желательно без знания имен столбцов в базе данных).
Примечание: я понимаю, что дизайн проблематичен, поскольку наличие двух свойств с одинаковыми именами в разных подклассах не является самым умным дизайнерским решением, которое когда-либо принималось, но изменить его сейчас еще более проблематично, и я бы хотел его избежать должен быть доставлен клиенту через несколько дней, и я действительно не хочу вносить изменения в дизайн сейчас.
Я использую NHibernate 2.0.1 (обновление не является вариантом, программа не работает с более поздними версиями NHibernate, и у нас нет времени, чтобы исправить это сейчас).