예제 #1
0
        static void Main()
        {
            ILl = new EfLoadL();

            DataTable dt = DataTableHelper.QueryableToTable(ILl.LoadLevellingTable);

            dt.TableName = "LoadLevelling";     // il nome della tabella nel db
            DataTable schema = DataTableHelper.QueryableToTable(ILl.SchemaTable);

            schema.TableName = "Schema";

            DataSet ds = new DataSet();

            ds.Tables.Add(dt);
            ds.Tables.Add(schema);

            CalcEXlogicClass.Execute(ds, "loadl", "LoadLevelling");

            DataTable returndt = ds.Tables[0];

            // converte il datatable
            var retlist = DataTableHelper.TableToList <LoadLevelling>(returndt).ToList();

            ILl.MassiveAddData(retlist);
            ILl.MassiveSaveData();
        }
예제 #2
0
 /// <summary>
 /// Creates a new instance of the DbField class.
 /// </summary>
 /// <param name="name">The name to consider.</param>
 /// <param name="table">The data table to consider.</param>
 /// <param name="query">The query to consider.</param>
 public static DbField FieldAsQuery(
     string name,
     DbTable table,
     IDbQuery query)
 {
     return(DbFluent.Field(name, table).AsQuery(query));
 }
예제 #3
0
        public virtual int RowCountByQuery(IStructureSchema structureSchema, IDbQuery query)
        {
            Ensure.That(structureSchema, "structureSchema").IsNotNull();
            Ensure.That(query, "query").IsNotNull();

            return(ExecuteScalar <int>(query.Sql, query.Parameters));
        }
예제 #4
0
        // ------------------------------------------
        // ACCESSORS
        // ------------------------------------------

        #region Accessors

        // SQL commands

        /// <summary>
        /// Gets the SQL text of the specified query.
        /// </summary>
        /// <param name="query">The query to consider.</param>
        /// <param name="parameterMode">Indicates whether parameters are replaced.</param>
        /// <param name="parameterSet">The parameter set to consider.</param>
        /// <param name="scriptVariableSet">The script variable set to consider.</param>
        /// <param name="log">The log to consider.</param>
        /// <returns>Returns the SQL text of the specified query.</returns>
        public string CreateCommandText(
            IDbQuery query,
            DbQueryParameterMode parameterMode   = DbQueryParameterMode.ValueInjected,
            IDataElementSet parameterSet         = null,
            IScriptVariableSet scriptVariableSet = null,
            IBdoLog log = null)
        {
            string sqlText = "";

            if (QueryBuilder == null)
            {
                log?.AddError("Data builder missing");
            }
            else
            {
                var subLog = new BdoLog();
                sqlText = QueryBuilder.BuildQuery(query, parameterMode, parameterSet, scriptVariableSet, subLog);
                log?.AddEvents(subLog);

                if (subLog.HasErrorsOrExceptions())
                {
                    return(StringHelper.__NoneString);
                }
            }

            return(sqlText);
        }
예제 #5
0
        /// <summary>
        /// Extendable method: 过滤数据源中属性包含(或不包含)某些值的实体(生成Sql IN表达式)
        /// </summary>
        /// <typeparam name="TEntity">对象类型</typeparam>
        /// <typeparam name="TProperty">对象属性类型</typeparam>
        /// <param name="source">数据源</param>
        /// <param name="selector">指定对象某属性的表达式</param>
        /// <param name="values">对象属性所包含的值</param>
        /// <param name="isIn">IN 或 NOT IN</param>
        /// <returns>新的数据源</returns>
        public static IDbQuery <TEntity> In <TEntity, TProperty>(this IDbQuery <TEntity> source, Expression <Func <TEntity, TProperty> > selector, TProperty[] values, bool isIn = true)
            where TEntity : class
        {
            //非空验证
            Check.ArgumentNull(source, nameof(source));
            Check.ArgumentNull(selector, nameof(selector));
            Check.ArgumentNull(values, nameof(values));
            //获取sql表达式模板
            MemberExpression memberExpression = selector.Body.GetMemberExpression();
            StringBuilder    sqlTemplate      = new StringBuilder();

            sqlTemplate.AppendLine(isIn ? "IN " : "NOT IN ");
            for (int i = 0; i < values.Length; i++)
            {
                sqlTemplate.AppendFormat("\t{0}", i == 0 ? '(' : ' ');
                sqlTemplate.AppendFormat("${0}", memberExpression.Member.Name);
                sqlTemplate.AppendFormat("{0}{1}", i, (i + 1 == values.Length) ? ")" : ",\n");
            }
            //获取原始参数集合
            IDbDataParameter[] parameters = new IDbDataParameter[values.Length];
            for (int i = 0; i < values.Length; i++)
            {
                parameters[i] = source.ParameterFactory.Parameter(string.Concat(memberExpression.Member.Name, i), values[i]);
            }
            //过滤获取新数据源
            return(source.Factory.CreateQuery(source, memberExpression, sqlTemplate.ToString(), parameters.ToArray()));
        }
예제 #6
0
 public SurveyAnswerServices(IRepository <SurveyAnswer> repository,
                             IRepository <AnswerRadio> repositoryAnswerRadio,
                             IRepository <AnswerCheckbox> repositoryAnswerCheckbox,
                             IRepository <AnswerFillblank> repositoryAnswerFillblank,
                             IRepository <AnswerScore> repositoryAnswerScore,
                             IRepository <AnswerOrder> repositoryAnswerOrder,
                             IRepository <AnswerMultiFillblank> repositoryAnswerMultiFillblank,
                             IRepository <AnswerChenRadio> repositoryAnswerChenRadio,
                             IRepository <AnswerChenCheckbox> repositoryAnswerChenCheckbox,
                             IRepository <AnswerChenScore> repositoryAnswerChenScore,
                             ISurveyDirectoryServices repositorySurveyDirectory,
                             IRepository <AnswerChenFillblank> repositoryAnswerChenFillblank,
                             IQuestionServices questionServices,
                             IDbQuery dbQuery)
 {
     _repository                     = repository;
     _dbQuery                        = dbQuery;
     _repositoryAnswerRadio          = repositoryAnswerRadio;
     _repositoryAnswerCheckbox       = repositoryAnswerCheckbox;
     _repositoryAnswerFillblank      = repositoryAnswerFillblank;
     _repositoryAnswerScore          = repositoryAnswerScore;
     _repositoryAnswerOrder          = repositoryAnswerOrder;
     _repositoryAnswerMultiFillblank = repositoryAnswerMultiFillblank;
     _repositoryAnswerChenRadio      = repositoryAnswerChenRadio;
     _repositoryAnswerChenCheckbox   = repositoryAnswerChenCheckbox;
     _repositoryAnswerChenScore      = repositoryAnswerChenScore;
     _repositoryAnswerChenFillblank  = repositoryAnswerChenFillblank;
     _questionServices               = questionServices;
     _repositorySurveyDirectory      = repositorySurveyDirectory;
 }
예제 #7
0
 /// <summary>
 /// Creates a new instance of the DbField class.
 /// </summary>
 /// <param name="expr">The expression to consider.</param>
 /// <param name="table">The data table to consider.</param>
 /// <param name="query">The query to consider.</param>
 public static DbField FieldAsQuery <T>(
     Expression <Func <T, object> > expr,
     DbTable table,
     IDbQuery query) where T : class
 {
     return(DbFluent.Field <T>(expr, table).AsQuery(query));
 }
예제 #8
0
        public virtual string Generate(IDbQuery query)
        {
            Ensure.That(query, "query").IsNotNull();

            if (query.IsEmpty)
            {
                return(null);
            }

            var sb = new StringBuilder();

            sb.AppendLine(query.Sql);
            foreach (var parameter in query.Parameters)
            {
                if (parameter is ArrayDacParameter)
                {
                    OnVisitParam((ArrayDacParameter)parameter, sb);
                    continue;
                }

                if (parameter is DacParameter)
                {
                    OnVisitParam(parameter, sb);
                    continue;
                }

                throw new SisoDbNotSupportedException(ExceptionMessages.DbQueryChecksumGenerator_UnsupportedDacParam);
            }

            return(HashService.GenerateHash(sb.ToString()));
        }
예제 #9
0
        /// <summary>
        /// Adds the specified sub query.
        /// </summary>
        /// <param name="subQuery">The sub query to consider.</param>
        /// <returns>Return this added parameter.</returns>
        public DataExpression UseSubQuery(IDbQuery subQuery)
        {
            if (SubQueries == null) SubQueries = new List<DbQuery>();
            SubQueries.Add((DbQuery)subQuery);

            return BdoScript.Function("sqlQuery", SubQueries.Count.ToString()).CreateExp();
        }
예제 #10
0
        protected override void InsertToCollection(int minPro, int maxPro, string[] paths)
        {
            if (JoinDb)
            {
                using (IDbQuery query = DbIns.GetQuery("Cq"))
                {
                    query.Open();
                    List <Record> cqs = query.SelectToList <Record>(null);

                    SetProgress(0, 40);
                    Tag = "读数据库";
                    double single = 40d / cqs.Count;
                    foreach (Record cq in cqs)
                    {
                        CqHelper.InsertToCollection(cq, Group);
                        Progress += single;
                    }
                }
                base.InsertToCollection(40, maxPro, paths);
            }
            else
            {
                base.InsertToCollection(0, maxPro, paths);
            }
        }
        // Stored --------------------------------

        /// <summary>
        /// Creates a new Stored advanced database query.
        /// </summary>
        /// <param name="name">The name to consider.</param>
        /// <param name="query">The query to consider.</param>
        /// <returns>Returns a new Stored advanced database query</returns>
        public static IDbStoredQuery StoredQuery(string name, IDbQuery query)
        {
            return(new DbStoredQuery(name)
            {
                Query = query
            });
        }
        public virtual string Generate(IDbQuery query)
        {
            Ensure.That(query, "query").IsNotNull();

            if (query.IsEmpty)
                return null;

            var sb = new StringBuilder();
            sb.AppendLine(query.Sql);
            foreach (var parameter in query.Parameters)
            {
                if(parameter is ArrayDacParameter)
                {
                    OnVisitParam((ArrayDacParameter)parameter, sb);
                    continue;
                }

                if(parameter is DacParameter)
                {
                    OnVisitParam(parameter, sb);
                    continue;
                }

                throw new SisoDbNotSupportedException(ExceptionMessages.DbQueryChecksumGenerator_UnsupportedDacParam);
            }

            return HashService.GenerateHash(sb.ToString());
        }
예제 #13
0
 public GetInvoiceByIdQueryHandler(
     IDbQuery <Invoice> query,
     IMapper mapper
     )
 {
     _query  = query;
     _mapper = mapper;
 }
예제 #14
0
 public UserLookupQueryHandler(
     IDbQuery <User> query,
     IMapper mapper
     )
 {
     _query  = query;
     _mapper = mapper;
 }
예제 #15
0
 public RoleLookupQueryHandler(
     IDbQuery <Role> query,
     IMapper mapper
     )
 {
     _query  = query;
     _mapper = mapper;
 }
예제 #16
0
        public async Task <T> QueryFirstOrDefaultAsync <T>(IDbQuery query)
        {
            var connection  = this.GetDbConnection();
            var transaction = this.context.Database.CurrentTransaction?.GetDbTransaction();

            this.CancellationToken.ThrowIfCancellationRequested();
            return(await connection.QueryFirstOrDefaultAsync <T>(query.ToString(), query.GetDapperParameters(), transaction));
        }
 public GetInvoiceAuditlogQueryHandler(
     IDbQuery <Auditlog> query,
     IMapper mapper
     )
 {
     _query  = query;
     _mapper = mapper;
 }
예제 #18
0
 public SearchCustomersQueryHandler(
     IDbQuery <Customer> query,
     IMapper mapper
     )
 {
     _query  = query;
     _mapper = mapper;
 }
 public SearchUsersQueryHandler(
     IDbQuery <User> query,
     IMapper mapper
     )
 {
     _query  = query;
     _mapper = mapper;
 }
 public GetCustomerByIdQueryHandler(
     IDbQuery <Customer> query,
     IMapper mapper
     )
 {
     _query  = query;
     _mapper = mapper;
 }
예제 #21
0
 /// <summary>
 /// Extendable method: 获取按某属性降序排序的分页查询数据源
 /// </summary>
 /// <typeparam name="TEntity">实体类型</typeparam>
 /// <param name="source">数据源</param>
 /// <param name="orderBySelector">指定排序属性</param>
 /// <param name="pageSize">每页的元素数量</param>
 /// <param name="pageIndex">当前第几页</param>
 /// <returns>TEntity类型的元素迭代器</returns>
 public static IDbPagedQuery <TEntity> PagingByDescending <TEntity>(this IDbQuery <TEntity> source, Expression <Func <TEntity, object> > orderBySelector, int pageSize, int pageIndex = 1)
     where TEntity : class
 {
     //非空检查
     Check.ArgumentNull(source, nameof(source));
     //执行分页查询
     return(source.Factory.CreatePagedQuery(source, orderBySelector, pageSize, pageIndex, true));
 }
 public GetUserByIdQueryHandler(
     IDbQuery <User> query,
     IMapper mapper
     )
 {
     _query  = query;
     _mapper = mapper;
 }
예제 #23
0
 public GetApplicationSettingsAuditlogQueryHandler(
     IDbQuery <Auditlog> query,
     IMapper mapper
     )
 {
     _query  = query;
     _mapper = mapper;
 }
 public GetCustomerAuditlogQueryHandler(
     IDbQuery <Auditlog> query,
     IMapper mapper
     )
 {
     _query  = query;
     _mapper = mapper;
 }
 public UserIdProvider(
     IDistributedCache cache,
     IDbQuery <User> query
     )
 {
     _cache = cache;
     _query = query;
 }
 public SearchInvoicesQueryHandler(
     IDbQuery <Invoice> query,
     IMapper mapper
     )
 {
     _query  = query;
     _mapper = mapper;
 }
예제 #27
0
 public GetRoleByIdQueryHandler(
     IDbQuery <Role> query,
     IMapper mapper
     )
 {
     _query  = query;
     _mapper = mapper;
 }
예제 #28
0
 public SearchRolesQueryHandler(
     IDbQuery <Role> query,
     IMapper mapper
     )
 {
     _query  = query;
     _mapper = mapper;
 }
예제 #29
0
 /// <inheritdoc cref="QueryAsync{T}(IDbQuery, ulong, Func{IQueryBuilder, IQueryBuilderWithFrom}, IDbTransaction)"/>
 public static async Task <Maybe <T> > QuerySingleAsync <T>(
     this IDbQuery @this,
     Func <IQueryBuilder, IQueryBuilderWithFrom> builder
     )
 {
     using var w = @this.UnitOfWork;
     return(await QuerySingleAsync <T>(@this, builder, w.Transaction).ConfigureAwait(false));
 }
 public GetFeatureFlagSettingsAuditlogQueryHandler(
     IDbQuery <Auditlog> query,
     IMapper mapper
     )
 {
     _query  = query;
     _mapper = mapper;
 }
예제 #31
0
 public CustomerLookupQueryHandler(
     IDbQuery <Customer> query,
     IMapper mapper
     )
 {
     _query  = query;
     _mapper = mapper;
 }
예제 #32
0
    /// <summary>
    /// 创建一个 DbTracing 实例
    /// </summary>
    /// <param name="query">即将执行的查询对象</param>
    /// <param name="complateCallback">当查询执行完成之后需要回调的方法</param>
    public DbTracing( IDbQuery query, Action<DbTracing> complateCallback )
    {

      QueryObject = query;

      ExecutionTime = TimeSpan.Zero;
      QueryTime = TimeSpan.Zero;


      callback = complateCallback;
    }
예제 #33
0
 /// <summary>
 /// 创建一个 DbTracing 实例
 /// </summary>
 /// <param name="query">即将执行的查询对象</param>
 public DbTracing( IDbQuery query ) : this( query, null ) { }