구성하고, 나중에 ISessionFactory
빌드 다른 측면이
도메인 모델 (하나 하나 개의 부분)에 저장하는 방법을 하나 개의 관계에 많은
그것으로부터, 끈기에 관한 정보를 보관하고있다. 엔티티 또는 콜렉션을 나타낼 수 있습니다.
다음
우리는 우리가 어떤 지속 된 클래스에 대해 무엇을 얻을 수 볼 수 있습니다
클래스 persister :
var entityType = typeof(TEntity);
var factory = ... // Get your ISessionFactory
var persister = factory.GetClassMetadata(entityType) as AbstractEntityPersister;
그리고 우리는 또한 관찰 할 수있는 콜렉션 영속
수집 persister :
그래서, 일반적으로, 무슨 일이 매핑되는
// the Abstract collection persister
var collectionPersister = factory
.GetCollectionMetadata(roleName) as AbstractCollectionPersister;
// here we go:
var isManyToMany = collectionPersister.IsManyToMany;
var isOneToMany = collectionPersister.IsOneToMany;
, 그것은 persister으로 표시됩니다.
var persister = factory.GetClassMetadata(entityType) as AbstractEntityPersister;
var propertyNameList = persister.PropertyNames;
foreach (var propertyName in propertyNameList)
{
// many info is in collections, so we need to know the index
// of our property
var index = persister.GetPropertyIndex(propertyName);
// with index, we can work with the mapped type
var type = persister.PropertyTypes[index];
// if the type is OneToOne... we can observe
if(type is NHibernate.Type.OneToOneType)
{
Console.Write(type.IsAssociationType);
Console.Write(type.IsAnyType);
Console.Write(type.IsMutable);
Console.Write(type.IsCollectionType);
Console.Write(type.IsComponentType);
Console.Write(type.ReturnedClass);
...
// many other interesting and useful info could be revealed
}
}
감사합니다 : 그것은
확장, 위의 재료를 바탕으로
one-to-one
을 찾을 수 있습니다 희망,one-to-one
에 대한 명시 적 검색처럼 될 수 있습니다. 나는 일대일 관계에 대해 확신하지 못합니다. –당신이 무엇을 찾고 있는지 잘 모르겠지만 위와 같이 잔혹한 사람들과 함께, 우리는 많은 것을 조사 할 수 있습니다. 그리고 실제로, 당신이 말했듯이, 저는이 * 메타 *를 사용하여 자신의 빌드를 만듭니다 - 상위 레이어 메타 데이터 ... 도움이 되길 바랍니다 –
다시 한번 감사드립니다. 나는 질문을 변경했습니다. –