nhibernate - 使用 nHibernate 将两种不同的数据模型映射到一个实体模型

标签 nhibernate hbm

我有两个不同的数据模型映射到同一个 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 从数据库中检索 Car 时,如下所示:
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" >

我该如何阻止?

最佳答案

我认为您需要在 class mapping 上设置多态性属性

<class "Car" polymorphism="explicit" ...

关于nhibernate - 使用 nHibernate 将两种不同的数据模型映射到一个实体模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2835282/

相关文章:

NHibernate 一对多问题

java - 需要帮助创建 hbm.xml

c# - 限制引用实体的 NHibernate 查询

c# - 带有子查询和别名的 NHibernate QueryOver

c# - NHibernate - 二级集合缓存不一致

java - 在外键上一对一 hibernate

hibernate - 在 Xml 映射中使用 Hibernate 设置创建和更新时间

java - 从 hbm 文件生成 Hibernate 复合键对象

java - Hibernate生成HT表时继承更新问题

Nhibernate 查询结束。使用 JoinAlias 进行急切获取