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; } }
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; } }