BN089-BS开发框架MVC4版/source20131023/Zephyr.Net/Zephyr.Data/Command/Handlers/QueryHandler.cs

(开头部分) 1KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.Collections.Generic;
using System.Data;
using System.Dynamic;

namespace Zephyr.Data
{
    internal class QueryHandler<TEntity>
    {
	    private readonly DbCommandData _data;
	    private readonly IQueryTypeHandler<TEntity> _typeHandler;

	    public QueryHandler(DbCommandData data)
	    {
		    _data = data;
			if (typeof(TEntity) == typeof(object) || typeof(TEntity) == typeof(ExpandoObject))
				_typeHandler = new QueryDynamicHandler<TEntity>(data);
			else if (typeof(TEntity) == typeof(DataTable))
				_typeHandler = new QueryDataTableHandler<TEntity>(data);
			else if (ReflectionHelper.IsCustomEntity<TEntity>())
				_typeHandler = new QueryCustomEntityHandler<TEntity>(data);
			else
				_typeHandler = new QueryScalarHandler<TEntity>(data);
		}

	    internal TList ExecuteMany<TList>(Action<TEntity, IDataReader> customMapperReader,
									Action<TEntity, dynamic> customMapperDynamic
					)
			where TList : IList<TEntity>
		{
			var items = (TList)_data.Context.Data.EntityFactory.Create(typeof(TList));
		    var reader = _data.Reader.InnerReader;

			if (_typeHandler.IterateDataReader)
			{
				while (reader.Read())
				{
					var item = (TEntity) _typeHandler.HandleType(customMapperReader, customMapperDynamic);
					items.Add(item);
				}
			}
			else
			{
				var item = (TEntity)_typeHandler.HandleType(customMapperReader, customMapperDynamic);
				items.Add(item);
			}

			return items;
		}

		internal TEntity ExecuteSingle(Action<TEntity, IDataReader> customMapperReader,
								   Action<TEntity, dynamic> customMapperDynamic)
		{
			var item = default(TEntity);
			if (!_typeHandler.IterateDataReader || _data.Reader.InnerReader.Read())
				item = (TEntity) _typeHandler.HandleType(customMapperReader, customMapperDynamic);
				
			return item;
		}
    }
后面还有 1 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。