我正在使用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"类别