とにかく、コレクションがセッションからの多対多または多対1の関係であるかどうかをテストすることはできますか?
私は限り使用している
SessionFactory.GetClassMetadata(型)
これはPropertyTypesコレクションを提供しますが、これは多対多と多対1を区別しません.1対多は対応しています
とにかく、コレクションがセッションからの多対多または多対1の関係であるかどうかをテストすることはできますか?
私は限り使用している
SessionFactory.GetClassMetadata(型)
これはPropertyTypesコレクションを提供しますが、これは多対多と多対1を区別しません.1対多は対応しています
TheEntity
以下のコードは、マップされたコレクションを見つけるために、プロパティ名を繰り返します。次に、コレクションの永続化を要求し、1 対多または多対多について通知されます。
var persister = factory
.GetClassMetadata(typeof(TheEntity)) as AbstractEntityPersister;
// iterate property names
foreach (var propertyName in persister.PropertyNames)
{
// find type
var index = persister.GetPropertyIndex(propertyName);
var propertyType = persister.PropertyTypes[index];
// check if it is collection
if (!propertyType.IsCollectionType)
{
continue;
}
// the Role is
// the Entity type Name & the Collection name
var roleName = persister.Name + "." + propertyName;
// the Abstract collection persister
var collectionPersister = factory
.GetCollectionMetadata(roleName) as AbstractCollectionPersister;
// here we go:
var isManyToMany = collectionPersister.IsManyToMany;
var isOneToMany = collectionPersister.IsOneToMany;
}
注:あなたの質問では、多対一(コレクションマッピングではなく参照)はOne-to-Many