/// <summary> /// /// </summary> /// <param name="source"></param> /// <param name="mapper"></param> /// <param name="disposing">释放回调</param> public QueryResultEnumerator(IResultSource source, IResultMapper <TEntity> mapper, Action <int> disposing) { mapper.TearUp(source); _disposing = disposing; _source = source; _mapper = mapper; }
void IDisposable.Dispose() { _current = default(TEntity); _mapper.TearDown(); _source.Dispose(); _disposing?.Invoke(_count); _source = null; }
public void TearUp(IResultSource source) { if (!IsSimpleType()) { throw new InvalidProgramException("仅支持简单类型映射,如 int, short, long, decimal等"); } underlyingType = Nullable.GetUnderlyingType(typeof(T)); this.source = source; }
void IResultMapper <object> .TearUp(IResultSource source) { this.source = source; }
/// <summary> /// 初始化 /// </summary> /// <param name="source"></param> public void TearUp(IResultSource source) { this.source = source; }
/// <summary> /// 读取DataReader指定列的值 /// </summary> /// <param name="source">源</param> /// <param name="column">列序号</param> /// <param name="convert">值转换器</param> /// <returns></returns> static object ReadValue(IResultSource source, int column, ValueConverter.ConvertDelegate convert) { return(convert(source[column])); }