subselectonetomanyloader.cs
来自「NHibernate NET开发者所需的」· CS 代码 · 共 61 行
CS
61 行
using System.Collections;
using System.Collections.Generic;
using NHibernate.Engine;
using NHibernate.Persister.Collection;
using NHibernate.SqlCommand;
using NHibernate.Type;
namespace NHibernate.Loader.Collection
{
/// <summary>
/// Implements subselect fetching for a one to many association
/// </summary>
public class SubselectOneToManyLoader : OneToManyLoader
{
private readonly object[] keys;
private readonly IType[] types;
private readonly object[] values;
private readonly IDictionary namedParameters;
private readonly IDictionary namedParameterLocMap;
public SubselectOneToManyLoader(
IQueryableCollection persister,
SqlString subquery,
ICollection entityKeys,
QueryParameters queryParameters,
IDictionary namedParameterLocMap,
ISessionFactoryImplementor factory,
IDictionary<string, IFilter> enabledFilters)
: base(persister, 1, subquery, factory, enabledFilters)
{
keys = new object[entityKeys.Count];
int i = 0;
foreach (EntityKey entityKey in entityKeys)
{
keys[i++] = entityKey.Identifier;
}
this.namedParameters = queryParameters.NamedParameters;
this.types = queryParameters.FilteredPositionalParameterTypes;
this.values = queryParameters.FilteredPositionalParameterValues;
this.namedParameterLocMap = namedParameterLocMap;
}
public override void Initialize(object id, ISessionImplementor session)
{
LoadCollectionSubselect(
session,
keys,
values,
types,
namedParameters,
KeyType
);
}
public override int[] GetNamedParameterLocs(string name)
{
return (int[]) namedParameterLocMap[name];
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?