NHibernate ConventionModelMapper;IsRootEntity和IsEntity有什么区别



我正在使用Sharp Architecture Lite玩耍,该Lite强调了约定而不是配置,并试图了解NHibernate ConventionModelMapper的工作方式。具体来说,我无法分辨具有际态性和amp;的区别。下面的isentity方法(顺便说一句,Entity是一个抽象类,与尖锐的拱门发票):

     internal static class Conventions
        {
        public static void WithConventions(this ConventionModelMapper mapper, Configuration configuration) {
                Type baseEntityType = typeof(Entity);
                mapper.IsEntity((type, declared) => IsEntity(type));
                mapper.IsRootEntity((type, declared) => baseEntityType.Equals(type.BaseType));
        public static bool IsEntity(Type type) {
                return typeof(Entity).IsAssignableFrom(type)
                       && typeof(Entity) != type
                       && !type.IsInterface;
            }
    }

i收集到IsEntity方法用于告诉NHIBERNATE哪些类有资格映射/持续到DB。但是,我一生无法弄清楚IsRootEntity方法的作用。围绕ConventionModelMapper的文档非常稀疏。

如果考虑情况:

class B : Entity { ... }
class A : B { ... }

映射它们时,a和b都是实体(isentity应该返回其true),而Nhibernate将映射为A。(通常您不需要此基类映射),因此具有ISROOTTINTINTITY将返回实体,而对于其所有子类别的所有子类都将返回 - 因此表明该实体不应映射,因为它是" root"类别

相关内容

  • 没有找到相关文章

最新更新