public override void InitByDataLink(DataLink link) { base.InitByDataLink(link); var hasher = System.Security.Cryptography.MD5.Create(); var hashdata = hasher.ComputeHash(System.Text.Encoding.Default.GetBytes($"procedure_unjoin_{TriggerKey}")); ProcedureName = string.Concat(hashdata.Select(b => b.ToString("x2")).ToArray()); Chain = new Chain(RootType, BasePrefix); GenerateCreateObjectTrigger = link.CreateObject; foreach (var p in link.DataLinkParameter.Cast <DataLinkParameter>().Where(p => !p.LinkField)) { if (!string.IsNullOrEmpty(p.ObjectField) && string.IsNullOrEmpty(p.Expression)) { Chain.Add(p.ObjectField); if (!SimpleFields.ContainsKey(p.LayerField)) { SimpleFields.Add(p.LayerField, p.ObjectField); } } else { var expressionField = new MapExpressionField(RootType, p.LayerField, p.Expression); ExpressionFields.Add(expressionField); foreach (var path in expressionField.Paths) { Chain.Add(path); } } } }
public override void InitByDataLink(DataLink link) { base.InitByDataLink(link); foreach (var p in link.DataLinkParameter.Cast <DataLinkParameter>().Where(p => !p.LinkField)) { if (!string.IsNullOrEmpty(p.ObjectField) && string.IsNullOrEmpty(p.Expression)) { var path = p.ObjectField.LastIndexOf('.') > -1 ? p.ObjectField.Substring(0, p.ObjectField.LastIndexOf('.')) : ""; if (!SimpleFields.Keys.Contains(path)) { SimpleFields.Add(path, new MapSimpleField(RootType, p.LayerField, p.ObjectField, BasePrefix)); } else { SimpleFields[path].Add(p.LayerField, p.ObjectField); } } else { var expressionField = new MapExpressionField(RootType, p.LayerField, p.Expression, BasePrefix); ExpressionFields.Add(expressionField); } } }
/// <summary> /// </summary> public override string SetStatement(MapExpressionField field) { return($"SET {field.LayerField}={field.Chain.ReplacePath(field.Paths, field.Expression)}{Environment.NewLine}"); }
/// <summary> /// </summary> public abstract string SetStatement(MapExpressionField field);