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 算力,解读结果公开显示在下面。
还没有人解读过这个文件。