subselectcollectionloader.cs

来自「NHibernate NET开发者所需的」· CS 代码 · 共 51 行

CS
51
字号
using System.Collections;
using System.Collections.Generic;
using NHibernate.Engine;
using NHibernate.Persister.Collection;
using NHibernate.SqlCommand;
using NHibernate.Type;

namespace NHibernate.Loader.Collection
{
	public class SubselectCollectionLoader : BasicCollectionLoader
	{
		private readonly object[] keys;
		private readonly IType[] types;
		private readonly object[] values;
		private readonly IDictionary namedParameters;
		private readonly IDictionary namedParameterLocMap;

		public SubselectCollectionLoader(
			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;
			}

			namedParameters = queryParameters.NamedParameters;
			types = queryParameters.FilteredPositionalParameterTypes;
			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 + -
显示快捷键?