本文整理汇总了C#中ISessionFactoryImplementor.GetCollectionPersister方法的典型用法代码示例。如果您正苦于以下问题:C# ISessionFactoryImplementor.GetCollectionPersister方法的具体用法?C# ISessionFactoryImplementor.GetCollectionPersister怎么用?C# ISessionFactoryImplementor.GetCollectionPersister使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ISessionFactoryImplementor
的用法示例。
在下文中一共展示了ISessionFactoryImplementor.GetCollectionPersister方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetQueryableCollection
protected IQueryableCollection GetQueryableCollection(string entityName, string actualPropertyName,
ISessionFactoryImplementor factory)
{
IPropertyMapping ownerMapping = (IPropertyMapping) factory.GetEntityPersister(entityName);
IType type = ownerMapping.ToType(actualPropertyName);
if (!type.IsCollectionType)
{
throw new MappingException(
"Property path [" + entityName + "." + actualPropertyName + "] does not reference a collection"
);
}
string role = ((CollectionType) type).Role;
try
{
return (IQueryableCollection) factory.GetCollectionPersister(role);
}
catch (InvalidCastException cce)
{
throw new QueryException("collection role is not queryable: " + role, cce);
}
catch (Exception e)
{
throw new QueryException("collection role not found: " + role, e);
}
}
示例2: GetElementType
public IType GetElementType( ISessionFactoryImplementor factory )
{
return factory.GetCollectionPersister( Role ).ElementType;
}
示例3: GetAssociatedClass
public System.Type GetAssociatedClass( ISessionFactoryImplementor factory )
{
try
{
IQueryableCollection collectionPersister = (IQueryableCollection) factory.GetCollectionPersister( role );
if ( !collectionPersister.ElementType.IsEntityType )
{
throw new MappingException( string.Format( "collection was not an association: {0}", collectionPersister.Role ) ) ;
}
return collectionPersister.ElementPersister.MappedClass;
}
catch ( InvalidCastException ice)
{
throw new MappingException( "collection role is not queryable " + role, ice );
}
}
示例4: GetJoinable
public IJoinable GetJoinable( ISessionFactoryImplementor factory )
{
return (IJoinable) factory.GetCollectionPersister( role );
}
示例5: GetAssociatedEntityName
public string GetAssociatedEntityName(ISessionFactoryImplementor factory)
{
try
{
IQueryableCollection collectionPersister = (IQueryableCollection)factory.GetCollectionPersister(role);
if (!collectionPersister.ElementType.IsEntityType)
{
throw new MappingException("collection was not an association: " + collectionPersister.Role);
}
return collectionPersister.ElementPersister.EntityName;
}
catch (InvalidCastException cce)
{
throw new MappingException("collection role is not queryable " + role, cce);
}
}
示例6: CustomLoader
public CustomLoader(
ICustomQuery customQuery,
ISessionFactoryImplementor factory)
: base(factory)
{
this.sql = customQuery.SQL;
this.querySpaces.AddAll(customQuery.QuerySpaces);
this.namedParameterBindPoints = customQuery.NamedParameterBindPoints;
IList entityPersisters = new ArrayList();
IList entityOwners = new ArrayList();
IList entityAliases = new ArrayList();
IList collectionPersisters = new ArrayList();
IList collectionOwners = new ArrayList();
IList collectionAliases = new ArrayList();
IList lockModes = new ArrayList();
IList resultColumnProcessors = new ArrayList();
IList nonScalarReturnList = new ArrayList();
IList resultTypes = new ArrayList();
IList specifiedAliases = new ArrayList();
int returnableCounter = 0;
bool hasScalars = false;
foreach (IReturn rtn in customQuery.CustomQueryReturns)
{
if (rtn is ScalarReturn)
{
ScalarReturn scalarRtn = (ScalarReturn) rtn;
resultTypes.Add(scalarRtn.Type);
specifiedAliases.Add(scalarRtn.ColumnAlias);
resultColumnProcessors.Add(
new ScalarResultColumnProcessor(
scalarRtn.ColumnAlias,
scalarRtn.Type
)
);
hasScalars = true;
}
else if (rtn is RootReturn)
{
RootReturn rootRtn = (RootReturn) rtn;
IQueryable persister = (IQueryable) factory.GetEntityPersister(rootRtn.EntityName);
entityPersisters.Add(persister);
lockModes.Add(rootRtn.LockMode);
resultColumnProcessors.Add(new NonScalarResultColumnProcessor(returnableCounter++));
nonScalarReturnList.Add(rtn);
entityOwners.Add(-1);
resultTypes.Add(persister.Type);
specifiedAliases.Add(rootRtn.Alias);
entityAliases.Add(rootRtn.EntityAliases);
querySpaces.AddAll(persister.QuerySpaces);
}
else if (rtn is CollectionReturn)
{
CollectionReturn collRtn = (CollectionReturn) rtn;
String role = collRtn.OwnerEntityName + "." + collRtn.OwnerProperty;
IQueryableCollection persister = (IQueryableCollection) factory.GetCollectionPersister(role);
collectionPersisters.Add(persister);
lockModes.Add(collRtn.LockMode);
resultColumnProcessors.Add(new NonScalarResultColumnProcessor(returnableCounter++));
nonScalarReturnList.Add(rtn);
collectionOwners.Add(-1);
resultTypes.Add(persister.Type);
specifiedAliases.Add(collRtn.Alias);
collectionAliases.Add(collRtn.CollectionAliases);
// determine if the collection elements are entities...
IType elementType = persister.ElementType;
if (elementType.IsEntityType)
{
IQueryable elementPersister = (IQueryable) ((EntityType) elementType).GetAssociatedJoinable(factory);
entityPersisters.Add(elementPersister);
entityOwners.Add(-1);
entityAliases.Add(collRtn.ElementEntityAliases);
querySpaces.AddAll(elementPersister.QuerySpaces);
}
}
else if (rtn is EntityFetchReturn)
{
EntityFetchReturn fetchRtn = (EntityFetchReturn) rtn;
NonScalarReturn ownerDescriptor = fetchRtn.Owner;
int ownerIndex = nonScalarReturnList.IndexOf(ownerDescriptor);
entityOwners.Add(ownerIndex);
lockModes.Add(fetchRtn.LockMode);
IQueryable ownerPersister = DetermineAppropriateOwnerPersister(ownerDescriptor);
EntityType fetchedType = (EntityType) ownerPersister.GetPropertyType(fetchRtn.OwnerProperty);
string entityName = fetchedType.GetAssociatedEntityName(Factory);
IQueryable persister = (IQueryable) factory.GetEntityPersister(entityName);
entityPersisters.Add(persister);
nonScalarReturnList.Add(rtn);
specifiedAliases.Add(fetchRtn.Alias);
entityAliases.Add(fetchRtn.EntityAliases);
querySpaces.AddAll(persister.QuerySpaces);
}
else if (rtn is CollectionFetchReturn)
{
CollectionFetchReturn fetchRtn = (CollectionFetchReturn) rtn;
NonScalarReturn ownerDescriptor = fetchRtn.Owner;
//.........这里部分代码省略.........
示例7: CustomLoader
public CustomLoader(ICustomQuery customQuery, ISessionFactoryImplementor factory) : base(factory)
{
sql = customQuery.SQL;
querySpaces.AddAll(customQuery.QuerySpaces);
namedParameterBindPoints = customQuery.NamedParameterBindPoints;
List<IQueryable> entitypersisters = new List<IQueryable>();
List<int> entityowners = new List<int>();
List<IEntityAliases> entityaliases = new List<IEntityAliases>();
List<IQueryableCollection> collectionpersisters = new List<IQueryableCollection>();
List<int> collectionowners = new List<int>();
List<ICollectionAliases> collectionaliases = new List<ICollectionAliases>();
List<LockMode> lockmodes = new List<LockMode>();
List<IResultColumnProcessor> resultColumnProcessors = new List<IResultColumnProcessor>();
List<IReturn> nonScalarReturnList = new List<IReturn>();
List<IType> resulttypes = new List<IType>();
List<string> specifiedAliases = new List<string>();
int returnableCounter = 0;
bool hasScalars = false;
foreach (IReturn rtn in customQuery.CustomQueryReturns)
{
if (rtn is ScalarReturn)
{
ScalarReturn scalarRtn = (ScalarReturn) rtn;
resulttypes.Add(scalarRtn.Type);
specifiedAliases.Add(scalarRtn.ColumnAlias);
resultColumnProcessors.Add(new ScalarResultColumnProcessor(scalarRtn.ColumnAlias, scalarRtn.Type));
hasScalars = true;
}
else if (rtn is RootReturn)
{
RootReturn rootRtn = (RootReturn) rtn;
IQueryable persister = (IQueryable) factory.GetEntityPersister(rootRtn.EntityName);
entitypersisters.Add(persister);
lockmodes.Add(rootRtn.LockMode);
resultColumnProcessors.Add(new NonScalarResultColumnProcessor(returnableCounter++));
nonScalarReturnList.Add(rtn);
entityowners.Add(-1);
resulttypes.Add(persister.Type);
specifiedAliases.Add(rootRtn.Alias);
entityaliases.Add(rootRtn.EntityAliases);
querySpaces.AddAll(persister.QuerySpaces);
}
else if (rtn is CollectionReturn)
{
CollectionReturn collRtn = (CollectionReturn) rtn;
string role = collRtn.OwnerEntityName + "." + collRtn.OwnerProperty;
IQueryableCollection persister = (IQueryableCollection) factory.GetCollectionPersister(role);
collectionpersisters.Add(persister);
lockmodes.Add(collRtn.LockMode);
resultColumnProcessors.Add(new NonScalarResultColumnProcessor(returnableCounter++));
nonScalarReturnList.Add(rtn);
collectionowners.Add(-1);
resulttypes.Add(persister.Type);
specifiedAliases.Add(collRtn.Alias);
collectionaliases.Add(collRtn.CollectionAliases);
// determine if the collection elements are entities...
IType elementType = persister.ElementType;
if (elementType.IsEntityType)
{
IQueryable elementPersister = (IQueryable) ((EntityType) elementType).GetAssociatedJoinable(factory);
entitypersisters.Add(elementPersister);
entityowners.Add(-1);
entityaliases.Add(collRtn.ElementEntityAliases);
querySpaces.AddAll(elementPersister.QuerySpaces);
}
}
else if (rtn is EntityFetchReturn)
{
EntityFetchReturn fetchRtn = (EntityFetchReturn) rtn;
NonScalarReturn ownerDescriptor = fetchRtn.Owner;
int ownerIndex = nonScalarReturnList.IndexOf(ownerDescriptor);
entityowners.Add(ownerIndex);
lockmodes.Add(fetchRtn.LockMode);
IQueryable ownerPersister = DetermineAppropriateOwnerPersister(ownerDescriptor);
EntityType fetchedType = (EntityType) ownerPersister.GetPropertyType(fetchRtn.OwnerProperty);
string entityName = fetchedType.GetAssociatedEntityName(Factory);
IQueryable persister = (IQueryable) factory.GetEntityPersister(entityName);
entitypersisters.Add(persister);
nonScalarReturnList.Add(rtn);
specifiedAliases.Add(fetchRtn.Alias);
entityaliases.Add(fetchRtn.EntityAliases);
querySpaces.AddAll(persister.QuerySpaces);
}
else if (rtn is CollectionFetchReturn)
{
CollectionFetchReturn fetchRtn = (CollectionFetchReturn) rtn;
NonScalarReturn ownerDescriptor = fetchRtn.Owner;
int ownerIndex = nonScalarReturnList.IndexOf(ownerDescriptor);
collectionowners.Add(ownerIndex);
lockmodes.Add(fetchRtn.LockMode);
IQueryable ownerPersister = DetermineAppropriateOwnerPersister(ownerDescriptor);
string role = ownerPersister.EntityName + '.' + fetchRtn.OwnerProperty;
IQueryableCollection persister = (IQueryableCollection) factory.GetCollectionPersister(role);
collectionpersisters.Add(persister);
nonScalarReturnList.Add(rtn);
//.........这里部分代码省略.........
示例8: CollectionEntry
/// <summary>
/// Initializes a new instance of <see cref="CollectionEntry"/>.
/// </summary>
/// <param name="cs">The <see cref="ICollectionSnapshot"/> from another <see cref="ISession"/>.</param>
/// <param name="factory">The <see cref="ISessionFactoryImplementor"/> that created this <see cref="ISession"/>.</param>
/// <remarks>
/// This takes an <see cref="ICollectionSnapshot"/> from another <see cref="ISession"/> and
/// creates an entry for it in this <see cref="ISession"/> by copying the values from the
/// <c>cs</c> parameter.
/// </remarks>
public CollectionEntry( ICollectionSnapshot cs, ISessionFactoryImplementor factory )
{
this.dirty = cs.Dirty;
this.snapshot = cs.Snapshot;
this.loadedKey = cs.Key;
this.initialized = true;
// Detached collections that get found and reattached during flush
// shouldn't be ignored
this.ignore = false;
SetLoadedPersister( factory.GetCollectionPersister( cs.Role ) );
}
示例9: AfterDeserialize
internal void AfterDeserialize(ISessionFactoryImplementor factory)
{
loadedPersister = factory.GetCollectionPersister(role);
}
示例10: CollectionEntry
/// <summary>
/// Initializes a new instance of <see cref="CollectionEntry"/> for initialized detached collections.
/// </summary>
/// <remarks>
/// For initialized detached collections
/// </remarks>
internal CollectionEntry(IPersistentCollection collection, ISessionFactoryImplementor factory)
{
// detached collections that get found + reattached
// during flush shouldn't be ignored
ignore = false;
loadedKey = collection.Key;
SetLoadedPersister(factory.GetCollectionPersister(collection.Role));
snapshot = collection.StoredSnapshot;
}