У меня есть две разные модели данных, которые отображаются на одну и ту же сущность Car. Мне нужно было создать вторую сущность с именем ParkedCar, которая идентична Car (и, следовательно, наследует от нее), чтобы nhibernate не жаловался, что для одной сущности существуют два сопоставления.
public class Car
{
protected Car()
{
IsParked = false;
}
public virtual int Id { get; set; }
public bool IsParked { get; internal set; }
}
public class ParkedCar : Car
{
public ParkedCar()
{
IsParked = true;
}
//no additional properties to car, merely exists to support mapping and signify the car is parked
}
Единственная проблема заключается в том, что, когда я прихожу, чтобы получить Автомобиль из базы данных, используя Criteria API, примерно так:
SessionProvider.OpenSession.Session.CreateCriteria<Car>()
.Add(Restrictions.Eq("Id", 123))
.List<Car>();
Запрос возвращает объекты автомобилей, которые взяты из модели данных ParkedCar. Это как если бы nhibernate по умолчанию специализированной сущности. И отображения вызывающе выглядят в нужном месте:
<class name="Car" xmlns="urn:nhibernate-mapping-2.2" table="tblCar">
<class name="ParkedCar" xmlns="urn:nhibernate-mapping-2.2" table="tblParkedCar" >
Как мне это остановить?