本文整理汇总了C#中ISessionImplementor.GetCollectionOwner方法的典型用法代码示例。如果您正苦于以下问题:C# ISessionImplementor.GetCollectionOwner方法的具体用法?C# ISessionImplementor.GetCollectionOwner怎么用?C# ISessionImplementor.GetCollectionOwner使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ISessionImplementor
的用法示例。
在下文中一共展示了ISessionImplementor.GetCollectionOwner方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ReadCollectionElement
/// <summary>
/// Read one collection element from the current row of the ADO.NET result set
/// </summary>
/// <param name="optionalOwner"></param>
/// <param name="optionalKey"></param>
/// <param name="rs"></param>
/// <param name="session"></param>
private void ReadCollectionElement(
object optionalOwner,
object optionalKey,
IDataReader rs,
ISessionImplementor session
)
{
ICollectionPersister collectionPersister = CollectionPersister;
object collectionRowKey = collectionPersister.ReadKey( rs, session );
if( collectionRowKey != null )
{
if( log.IsDebugEnabled )
{
log.Debug( "found row of collection: " + MessageHelper.InfoString( collectionPersister, collectionRowKey ) );
}
object owner = optionalOwner;
if( owner == null )
{
owner = session.GetCollectionOwner( collectionRowKey, collectionPersister );
if( owner == null )
{
//TODO: This is assertion is disabled because there is a bug that means the
// original owner of a transient, uninitialized collection is not known
// if the collection is re-referenced by a different object associated
// with the current Session
//throw new AssertionFailure("bug loading unowned collection");
}
}
PersistentCollection rowCollection = session.GetLoadingCollection( collectionPersister, collectionRowKey, rs );
if( rowCollection != null )
{
rowCollection.ReadFrom( rs, collectionPersister, owner );
}
}
else if( optionalKey != null )
{
if( log.IsDebugEnabled )
{
log.Debug( "result set contains (possibly empty) collection: " + MessageHelper.InfoString( collectionPersister, optionalKey ) );
}
session.GetLoadingCollection( collectionPersister, optionalKey, rs ); // handle empty collection
}
}
示例2: ReadCollectionElement
/// <summary>
/// Read one collection element from the current row of the ADO.NET result set
/// </summary>
private void ReadCollectionElement(
object optionalOwner,
object optionalKey,
ICollectionPersister persister,
ICollectionAliases descriptor,
IDataReader rs,
ISessionImplementor session
)
{
object collectionRowKey = persister.ReadKey(
rs,
descriptor.SuffixedKeyAliases,
session);
if (collectionRowKey != null)
{
// we found a collection element in the result set
if (log.IsDebugEnabled)
{
log.Debug(
"found row of collection: " +
MessageHelper.InfoString(persister, collectionRowKey));
}
object owner = optionalOwner;
if (owner == null)
{
owner = session.GetCollectionOwner(collectionRowKey, persister);
if (owner == null)
{
//TODO: This is assertion is disabled because there is a bug that means the
// original owner of a transient, uninitialized collection is not known
// if the collection is re-referenced by a different object associated
// with the current Session
//throw new AssertionFailure("bug loading unowned collection");
}
}
IPersistentCollection rowCollection = session.GetLoadingCollection(persister, collectionRowKey, rs);
if (rowCollection != null)
{
rowCollection.ReadFrom(rs, persister, descriptor, owner);
}
}
else if (optionalKey != null)
{
// we did not find a collection element in the result set, so we
// ensure that a collection is created with the owner's identifier,
// since what we have is an empty collection
if (log.IsDebugEnabled)
{
log.Debug(
"result set contains (possibly empty) collection: " +
MessageHelper.InfoString(persister, optionalKey));
}
session.GetLoadingCollection(persister, optionalKey, rs); // handle empty collection
}
// else no collection element, but also no owner
}