代码之家  ›  专栏  ›  技术社区  ›  Bittercoder

如何清除nhibernate中的整个二级缓存

  •  25
  • Bittercoder  · 技术社区  · 15 年前

    我希望通过代码清除nhibernate中的整个二级缓存。是否有一种独立于正在使用的缓存提供程序的方法来执行此操作?(我们有客户在同一个应用程序中同时使用memcache和syscache)。

    我们希望清除整个缓存,因为数据库外部的更改可能已经发生(而且我们不能保证:哪些表/实体受到影响,所以我们必须假设最坏的情况)。

    1 回复  |  直到 13 年前
        1
  •  36
  •   Diego Mijelshon    15 年前

    这应该可以做到:

    sessionFactory.EvictQueries();
    foreach (var collectionMetadata in sessionFactory.GetAllCollectionMetadata())
             sessionFactory.EvictCollection(collectionMetadata.Key);
    foreach (var classMetadata in sessionFactory.GetAllClassMetadata())
             sessionFactory.EvictEntity(classMetadata.Key);