本文整理汇总了C#中IPersistentCollection.ForceInitialization方法的典型用法代码示例。如果您正苦于以下问题:C# IPersistentCollection.ForceInitialization方法的具体用法?C# IPersistentCollection.ForceInitialization怎么用?C# IPersistentCollection.ForceInitialization使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IPersistentCollection
的用法示例。
在下文中一共展示了IPersistentCollection.ForceInitialization方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: PrepareCollectionForUpdate
//1. record the collection role that this collection is referenced by
//2. decide if the collection needs deleting/creating/updating (but don't actually schedule the action yet)
private static void PrepareCollectionForUpdate(IPersistentCollection coll, CollectionEntry entry)
{
if (entry.IsProcessed)
throw new AssertionFailure("collection was processed twice by flush()");
entry.IsProcessed = true;
ICollectionPersister loadedPersister = entry.LoadedPersister;
ICollectionPersister currentPersister = entry.CurrentPersister;
if (loadedPersister != null || currentPersister != null)
{
// it is or was referenced _somewhere_
bool ownerChanged = loadedPersister != currentPersister ||
!currentPersister.KeyType.IsEqual(entry.LoadedKey, entry.CurrentKey, EntityMode.Poco);
if (ownerChanged)
{
// do a check
bool orphanDeleteAndRoleChanged = loadedPersister != null &&
currentPersister != null && loadedPersister.HasOrphanDelete;
if (orphanDeleteAndRoleChanged)
{
throw new HibernateException("Don't change the reference to a collection with cascade=\"all-delete-orphan\": " + loadedPersister.Role);
}
// do the work
if (currentPersister != null)
{
entry.IsDorecreate = true; // we will need to create new entries
}
if (loadedPersister != null)
{
entry.IsDoremove = true; // we will need to remove ye olde entries
if (entry.IsDorecreate)
{
log.Debug("Forcing collection initialization");
coll.ForceInitialization(); // force initialize!
}
}
}
else if (coll.IsDirty)
{
// else if it's elements changed
entry.IsDoupdate = true;
}
}
}