Ejemplo n.º 1
0
        public void Run()
        {
            var _distinctdata = _alldata.SelectMany(e => e.BaseObject.Select(w => w.Key)).Distinct().ToList();

            var AllValidfields = _tableInfo.ColumnInfos.Select(e => e.ColumnName).Intersect(_distinctdata);

            var ValidKeys = _tableInfo.ColumnInfos.Where(q => q.IsKey).Select(e => e.ColumnName).Intersect(_distinctdata).ToList();

            if (ValidKeys.Count != _tableInfo.ColumnInfos.Where(e => e.IsKey).Select(e => e.ColumnName).Distinct().Count())
            {
                Console.WriteLine($"Key missed -Type {_tableName} ");
                throw new Exception();
            }

            querybulder = new UpdateQueryBuilder(_tableName);

            List <SqlParameter> _paramsSql = new List <SqlParameter>();

            int _index = 0;

            foreach (var item in _alldata)
            {
                List <string> stringParamForQuery = new List <string>();

                List <string> stringKeyParam = new List <string>();

                var data = item.ChangedProperties.Intersect(AllValidfields);

                if (data.Count() > 0)
                {
                    foreach (var obj in data)
                    {
                        string param = $"@p{_index++}";

                        stringParamForQuery.Add(param);

                        var dbpar = new SqlParameter(param, shcema[_tableName][obj]);

                        if (item.BaseObject.ContainsKey(obj))
                        {
                            dbpar.Value = QueryBuilderHelper.FormatSQLForDb(_tableName, obj, item.BaseObject[obj]);
                        }
                        else
                        {
                            dbpar.Value = DBNull.Value;
                        }

                        _paramsSql.Add(dbpar);
                    }

                    foreach (var singleKey in ValidKeys)
                    {
                        string param = $"@p{_index++}";
                        var    dbpar = new SqlParameter(param, shcema[_tableName][singleKey]);

                        stringKeyParam.Add(param);
                        dbpar.Value = QueryBuilderHelper.FormatSQLForDb(_tableName, singleKey, item.BaseObject[singleKey]);
                        _paramsSql.Add(dbpar);
                    }

                    querybulder.AppendCommand(data.ToList(), stringParamForQuery, ValidKeys, stringKeyParam);

                    if (_paramsSql.Count > UpdateCommandParametersCount)
                    {
                        Execute(_paramsSql);
                        _paramsSql = new List <SqlParameter>();
                        _index     = 0;
                        querybulder.Reset();
                        stringParamForQuery = new List <string>();
                        stringKeyParam      = new List <string>();
                    }
                }
            }

            if (_paramsSql.Count > 0)
            {
                Execute(_paramsSql);
                _paramsSql = new List <SqlParameter>();
                _index     = 0;
            }
        }
Ejemplo n.º 2
0
        public void Run()
        {
            var _distinctdata = _alldata.SelectMany(e => e.BaseObject.Select(w => w.Key)).Distinct();

            var ValidKeys = _tableInfo.ColumnInfos.Where(q => q.IsKey).Select(e => e.ColumnName).Intersect(_distinctdata).ToList();

            var AllValidfields = _tableInfo.ColumnInfos.Select(e => e.ColumnName).Intersect(_distinctdata);


            if (ValidKeys.Count != _tableInfo.ColumnInfos.Where(e => e.IsKey).Select(e => e.ColumnName).Distinct().Count())
            {
                Console.WriteLine($"Key missed -Type {_tableName} ");

                EmailSender sender = new EmailSender();
                sender.SendEmailAsync("*****@*****.**", "Error--key", $"Key missed -Type {_tableName} ");
            }

            querybulder = new InsertQueryBuilder(AllValidfields, _tableName);

            List <SqlParameter> _paramsSql = new List <SqlParameter>();

            int _index = 0;

            foreach (var item in _alldata)
            {
                List <string> stringparamForQuery = new List <string>();

                foreach (var field in AllValidfields)
                {
                    string param = $"@p{_index++}";

                    stringparamForQuery.Add(param);

                    var dbpar = new SqlParameter(param, shcema[_tableName][field]);
                    if (item.BaseObject.ContainsKey(field))
                    {
                        dbpar.Value = QueryBuilderHelper.FormatSQLForDb(_tableName, field, item.BaseObject[field]);
                    }
                    else
                    {
                        dbpar.Value = DBNull.Value;
                    }

                    _paramsSql.Add(dbpar);
                }

                querybulder.AddQueryParametrs(stringparamForQuery.ToList());

                if (_paramsSql.Count > InsertCommandParametersCount)
                {
                    Execute(_paramsSql);
                    _paramsSql = new List <SqlParameter>();
                    _index     = 0;
                    querybulder.Reset();
                }
            }

            if (_paramsSql.Count > 0)
            {
                Execute(_paramsSql);
                _paramsSql = new List <SqlParameter>();
                _index     = 0;
            }
        }