2013-09-15 3 views
2

Есть ли в любом случае для меня проверка того, является ли коллекция множеством или многими отношениями из сеанса.Тестирование коллекции Множество или многие из них

у меня, насколько помощью

SessionFactory.GetClassMetadata (тип)

который дает коллекцию PropertyTypes, но это не различает многие ко многим и многие к одному, где, как один ко многим оплачивается

ответ

1

В приведенном ниже коде будут перечислены имена объектов TheEntity, чтобы найти отображаемые коллекции. Затем он попросит Collection стойкая бактерия и получить информацию о один-к-многим или многие-ко-многим

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

+0

Большое спасибо, так близко, но вы только что дали мне xtra push i need! –

+0

Также есть ли способ получить имя дочерней коллекции от многих до многих отношений? –

+0

Если вы спрашиваете, как получить значение атрибута * class * из этого оператора: '', тогда он доступен здесь: 'collectionPersister. ElementNodeName' –

Смежные вопросы