NHibernate多个类映射到相同的表缓存问题

时间:2012-03-24 21:08:23

标签: nhibernate caching mapping

是否可以具备以下条件:

  1. 在NHibernate中启用了L2缓存
  2. 映射到单个表的多个类
  3. 编辑一个类会更新NHibernate二级缓存中另一个类的信息。
  4. 在我的应用程序中,对于我的一些较大的对象,我有“小”类,只有几个属性用于数据传输,然后是“大”版本进行编辑。通过这种方式,我可以快速加载项目列表供用户选择,然后只在用户想要编辑该实体时才加载其余属性。

    我发现如果我编辑一个“大”实体,然后尝试检索一个“小”实体,那么小实体的信息就不会用新信息更新(当然,所讨论的信息对两者都是通用的类)。我正在大量使用L2缓存,所以我猜测NHibernate无法将更改从大型实体映射到小型实体?如果是这种情况,我唯一的选择是从小实体中删除缓存支持吗?我想我也可以在保存大版本的同时加载和保存小版本,虽然这看起来像是一个黑客(而且真的还有比这个简单的例子更多,所以我宁愿不这样做)

    有关域名的简单说明:

    /* EntityDto is just a base class with an Id */
    public class SimpleAdDto : EntityDto<SimpleAdDto>
    {
        public virtual string Name { get; set; }
        /* more properties */
    }
    
    public class FullAdDto : EntityDto<FullAdDto>
    {
        public virtual string Name { get; set; }
        /* lots more properties */
    }
    

    两个类都映射到同一个基表; FullAdDto只包含更多属性。如果我编辑FullAdDto的名称,更新的名称不会反映在缓存中的SimpleAdDto中。

    我根本没有试验过继承,如果我以某种方式让FullAdD成为SimpleAdDto的子类,这会解决我的问题吗?

    提前致谢!

0 个答案:

没有答案