Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private void RulesApply(MisBusContext _context)
- {
- var firstTableColumnName = new List<string>();
- var secondTableColumnName = new List<string>();
- foreach (var rule in Rules)
- {
- firstTableColumnName.Add(rule.Field1);
- secondTableColumnName.Add(rule.Field2);
- }
- firstTableColumnName.Add(PrimaryKey1);
- secondTableColumnName.Add(PrimaryKey2);
- var firstUnicCols = firstTableColumnName.Distinct();
- var secondUnicCols = secondTableColumnName.Distinct();
- var ref1DBConnection = Reference1.Remote.Connect();
- var cmd1 = ref1DBConnection.CreateCommand();
- var list = new List<Dictionary<string, string>>();
- foreach (var item in firstUnicCols)
- {
- cmd1.CommandText = $"SELECT `{item}` FROM `{ref1DBConnection.Database}`.`{Reference1.RemoteTableName}`";
- using (var reader = cmd1.ExecuteReader())
- {
- while (reader.Read())
- {
- list.Add(new Dictionary<string, string>()
- { { item,reader[item].ToString() } });
- }
- }
- }
- var ref2DBConnection = Reference2.Remote.Connect();
- var cmd2 = ref2DBConnection.CreateCommand();
- var dbConnection = _context.Database.GetDbConnection();
- var cmd = dbConnection.CreateCommand();
- foreach (var rule in Rules)
- {
- foreach (var item in list)
- {
- foreach (var key in item.Keys)
- {
- if (rule.Field1 == key)
- {
- if (rule.Action == RefAction.A_Equals_B)
- {
- cmd2.CommandText = $"SELECT `{rule.Field2}` FROM `{ref2DBConnection.Database}`.`{Reference2.RemoteTableName}`"
- + $" WHERE `{rule.Field2}`='{item[key]}'";
- using (var reader = cmd2.ExecuteReader())
- {
- while (reader.Read())
- {
- cmd1.CommandText = $"SELECT `{PrimaryKey1}` FROM `{ref1DBConnection.Database}`.`{Reference1.RemoteTableName}`"
- + $" WHERE `{rule.Field1}`='{item[key]}'";
- var id = cmd1.ExecuteScalar();
- cmd.CommandText = $"INSERT INTO `{dbConnection.Database}`.`RefKeysMatch_{ID}` (`key_1`, `key_2`) VALUES"
- + $" ({reader[rule.Field2]}, {id})";
- cmd.ExecuteNonQuery();
- }
- }
- }
- if (rule.Action == RefAction.B_Contains_A)
- {
- if (Reference2.Remote.Type == RemoteType.MSSQL)
- {
- cmd2.CommandText = $"SELECT `{rule.Field2}` FROM `{ref2DBConnection.Database}`.`{Reference2.RemoteTableName}`"
- + $" WHERE CHARINDEX('{item[key]}', `{rule.Field2}`) > 0";
- using (var reader = cmd2.ExecuteReader())
- {
- while (reader.Read())
- {
- cmd1.CommandText = $"SELECT `{PrimaryKey1}` FROM `{ref1DBConnection.Database}`.`{Reference2.RemoteTableName}`"
- + $" WHERE `{rule.Field2}`='{item[key]}'";
- var id = cmd1.ExecuteScalar();
- cmd.CommandText = $"INSERT INTO `{dbConnection.Database}`.`RefKeysMatch_{ID}` (`key_1`, `key_2`) VALUES"
- + $" ({reader[rule.Field2]}, {id})";
- cmd.ExecuteNonQuery();
- }
- }
- }
- else if (Reference2.Remote.Type == RemoteType.MySQL)
- {
- cmd2.CommandText = $"SELECT `{rule.Field2}` FROM `{ref2DBConnection.Database}`.`{Reference2.RemoteTableName}`"
- + $" WHERE LOCATE('{item[key]}', `{rule.Field2}`) > 0";
- using (var reader = cmd2.ExecuteReader())
- {
- while (reader.Read())
- {
- cmd1.CommandText = $"SELECT `{PrimaryKey1}` FROM `{ref1DBConnection.Database}`.`{Reference2.RemoteTableName}`"
- + $" WHERE `{rule.Field2}`='{item[key]}'";
- var id = cmd1.ExecuteScalar();
- cmd.CommandText = $"INSERT INTO `{dbConnection.Database}`.`RefKeysMatch_{ID}` (`key_1`, `key_2`) VALUES"
- + $" ({reader[rule.Field2]}, {id})";
- cmd.ExecuteNonQuery();
- }
- }
- }
- }
- if (rule.Action == RefAction.A_Contains_B)
- {
- cmd2.CommandText = $"SELECT `{rule.Field2}` FROM `{ref2DBConnection.Database}`.`{Reference2.RemoteTableName}`";
- using (var reader = cmd2.ExecuteReader())
- {
- while (reader.Read())
- {
- if (item[key].Contains(reader[rule.Field2].ToString()))
- {
- cmd1.CommandText = $"SELECT `{PrimaryKey1}` FROM `{ref1DBConnection.Database}`.`{Reference2.RemoteTableName}`"
- + $" WHERE `{rule.Field2}`='{reader[rule.Field2].ToString()}'";
- var id = cmd1.ExecuteScalar();
- if (id != null)
- {
- cmd.CommandText = $"INSERT INTO `{dbConnection.Database}`.`RefKeysMatch_{ID}` (`key_1`, `key_2`) VALUES"
- + $" ({reader[rule.Field2]}, {id})";
- cmd.ExecuteNonQuery();
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement