public ReplaceSqlServerQueryModelVisitor(IQueryOptimizer queryOptimizer , INavigationRewritingExpressionVisitorFactory navigationRewritingExpressionVisitorFactory , ISubQueryMemberPushDownExpressionVisitor subQueryMemberPushDownExpressionVisitor , IQuerySourceTracingExpressionVisitorFactory querySourceTracingExpressionVisitorFactory , IEntityResultFindingExpressionVisitorFactory entityResultFindingExpressionVisitorFactory , ITaskBlockingExpressionVisitor taskBlockingExpressionVisitor , IMemberAccessBindingExpressionVisitorFactory memberAccessBindingExpressionVisitorFactory , IOrderingExpressionVisitorFactory orderingExpressionVisitorFactory , IProjectionExpressionVisitorFactory projectionExpressionVisitorFactory , IEntityQueryableExpressionVisitorFactory entityQueryableExpressionVisitorFactory , IQueryAnnotationExtractor queryAnnotationExtractor , IResultOperatorHandler resultOperatorHandler , IEntityMaterializerSource entityMaterializerSource , IExpressionPrinter expressionPrinter , IRelationalAnnotationProvider relationalAnnotationProvider , IIncludeExpressionVisitorFactory includeExpressionVisitorFactory , ISqlTranslatingExpressionVisitorFactory sqlTranslatingExpressionVisitorFactory , ICompositePredicateExpressionVisitorFactory compositePredicateExpressionVisitorFactory , IConditionalRemovingExpressionVisitorFactory conditionalRemovingExpressionVisitorFactory , IQueryFlattenerFactory queryFlattenerFactory , IDbContextOptions contextOptions , RelationalQueryCompilationContext queryCompilationContext , SqlServerQueryModelVisitor parentQueryModelVisitor , INavigationExpressionCollection collection) : base(queryOptimizer, navigationRewritingExpressionVisitorFactory, subQueryMemberPushDownExpressionVisitor, querySourceTracingExpressionVisitorFactory, entityResultFindingExpressionVisitorFactory, taskBlockingExpressionVisitor, memberAccessBindingExpressionVisitorFactory, orderingExpressionVisitorFactory, projectionExpressionVisitorFactory, entityQueryableExpressionVisitorFactory, queryAnnotationExtractor, resultOperatorHandler, entityMaterializerSource, expressionPrinter, relationalAnnotationProvider, includeExpressionVisitorFactory, sqlTranslatingExpressionVisitorFactory, compositePredicateExpressionVisitorFactory, conditionalRemovingExpressionVisitorFactory, queryFlattenerFactory, contextOptions, queryCompilationContext, parentQueryModelVisitor) { ExpressionCollection = collection; }
/// <summary> /// 执行查询,并返回单个对象 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="queryModel"></param> /// <param name="returnDefaultWhenEmpty"></param> /// <returns></returns> public T ExecuteSingle <T>(QueryModel queryModel, bool returnDefaultWhenEmpty) { SqlServerQueryModelVisitor queryModelVisitor = new SqlServerQueryModelVisitor(); var command = queryModelVisitor.Translate(queryModel); this.provider.ExecutedCommandBuilder = command; using (IDataReader reader = this.provider.ExecuteDataReader(command)) { bool isExists = reader.Read(); // 如果不存在查询记录 if (isExists == false) { // 如果可以默认 if (returnDefaultWhenEmpty) { return(default(T)); } else { throw new InvalidOperationException("未查询出满足条件的任何记录。"); } } var tuple = reader.GetDeserializerState <T>(); return((T)tuple.Func(reader)); } }
/// <summary> /// 执行查询,并返回第一行第一列 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="queryModel"></param> /// <returns></returns> public T ExecuteScalar <T>(QueryModel queryModel) { SqlServerQueryModelVisitor queryModelVisitor = new SqlServerQueryModelVisitor(); var command = queryModelVisitor.Translate(queryModel); SqlCmd.Current = command; return(this.provider.ExecuteScalar <T>(command.Sql, command.Parameters)); }
/// <summary> /// 执行查询,并返回第一行第一列 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="queryModel"></param> /// <returns></returns> public T ExecuteScalar <T>(QueryModel queryModel) { SqlServerQueryModelVisitor queryModelVisitor = new SqlServerQueryModelVisitor(); var command = queryModelVisitor.Translate(queryModel); this.provider.ExecutedCommandBuilder = command; return(this.provider.ExecuteScalar <T>(command)); }
/// <summary> /// 执行查询,并返回 IEnumerable<T> 对象 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="queryModel"></param> /// <returns></returns> public IEnumerable <T> ExecuteCollection <T>(QueryModel queryModel) { SqlServerQueryModelVisitor queryModelVisitor = new SqlServerQueryModelVisitor(); var command = queryModelVisitor.Translate(queryModel); SqlCmd.Current = command; using (IDataReader reader = this.provider.ExecuteDataReader(command.Sql.ToString(), command.Parameters)) { var tuple = reader.GetDeserializerState <T>(); while (reader.Read()) { yield return((T)tuple.Func(reader)); } } }
/// <summary> /// 执行查询,并返回单个对象 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="queryModel"></param> /// <param name="returnDefaultWhenEmpty"></param> /// <returns></returns> public T ExecuteSingle <T>(QueryModel queryModel, bool returnDefaultWhenEmpty) { SqlServerQueryModelVisitor queryModelVisitor = new SqlServerQueryModelVisitor(); var command = queryModelVisitor.Translate(queryModel); SqlCmd.Current = command; using (IDataReader reader = this.provider.ExecuteDataReader(command.Sql.ToString(), command.Parameters)) { if (reader.Read() == false && returnDefaultWhenEmpty) { return(default(T)); } var tuple = reader.GetDeserializerState <T>(); return((T)tuple.Func(reader)); } }