5

arasındaki fark nedir? Yapılandırmayla ilgili sözleşmeyi vurgulayan ve NHibernate ConventionModelMapper'un nasıl çalıştığını anlamaya çalışan Sharp Architecture Lite ile uğraşıyorum. Özellikle, & IsEntity yöntemler aşağıda IsRootEntity arasındaki farkı değil (btw, Entity soyut bir sınıf keskin Arch ile birlikte gösterir): I IsEntity yöntem NHibernate bildirmek için kullanılır bu toplamakNHibernate ConventionModelMapper; IsRootEntity & IsEntity

 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; 
      } 
    } 

olan sınıflar, DB'ye eşleme/kalıcılık için uygundur. Ancak, ben hayatımın için IsRootEntity yönteminin ne yaptığını anlayamıyorum. ConventionModelMapper ile ilgili dokümantasyon oldukça seyrek. Davayı ele alırsak

cevap

1

: eşleştirmekten zaman

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

, A ve B her iki tarafın (IsEntity onlar için gerçek dönmelidir), ve NHibernate Ancak B. bir alt sınıfı olarak Varlık A eşler Kendisi, tüm varlıklar için bir temel sınıf olduğu için eşlenmemelidir (genellikle bu taban sınıfının eşlenmesini istemezsiniz), bu nedenle IsRootEntity, Varlık için doğru ve tüm alt sınıfları için yanlıştır. Böylece, Varlığın eşlenmemesi gerektiğini belirtir. Bir "root" sınıfı olduğu gibi

+0

Sizin durumunuz için, IsEntity() A ve B için true olarak döndürülürken, IsRootEntity yalnızca B için geçerli olmalıdır. IsRoot Varlık(), bir IsEntity() alt kümesi olmalı ve yalnızca sınıf mirasının eşlenmesini kontrol etmek için kullanılır. Örneğin, IsRootEntity'yi hem A hem de B için true olarak ayarlarsanız, tüm özelliklerini iki ayrı sınıf olarak eşler. – dotjoe