本文整理汇总了C#中ICollectionPersister.ReadKey方法的典型用法代码示例。如果您正苦于以下问题:C# ICollectionPersister.ReadKey方法的具体用法?C# ICollectionPersister.ReadKey怎么用?C# ICollectionPersister.ReadKey使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ICollectionPersister
的用法示例。
在下文中一共展示了ICollectionPersister.ReadKey方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ReadCollectionElement
/// <summary>
/// Read one collection element from the current row of the ADO.NET result set
/// </summary>
private static void ReadCollectionElement(object optionalOwner, object optionalKey, ICollectionPersister persister,
ICollectionAliases descriptor, IDataReader rs, ISessionImplementor session)
{
IPersistenceContext persistenceContext = session.PersistenceContext;
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 = persistenceContext.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 =
persistenceContext.LoadContexts.GetCollectionLoadContext(rs).GetLoadingCollection(persister, collectionRowKey);
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));
}
persistenceContext.LoadContexts.GetCollectionLoadContext(rs).GetLoadingCollection(persister, optionalKey);
// handle empty collection
}
// else no collection element, but also no owner
}