private void JoinToString(Join join, StringBuilder sb, bool modifySelf) { sb.Append(join.GetKeyword()); sb.Append(' '); sb.Append(SqlSyntax.AutoBracketValid(join.Table)); // joinAlias belirtilmişse ekle if (!string.IsNullOrEmpty(join.Name)) { sb.Append(' '); sb.Append(join.Name); } if (!ReferenceEquals(null, join.OnCriteria) && !join.OnCriteria.IsEmpty) { sb.Append(" ON ("); if (modifySelf) sb.Append(join.OnCriteria.ToString(this)); else sb.Append(join.OnCriteria.ToStringIgnoreParams()); sb.Append(')'); } }
public static SqlQuery EnsureJoin(this SqlQuery query, Join join) { if (join == null) throw new ArgumentNullException("join"); var ext = (ISqlQueryExtensible)query; var joinAlias = join.Name; var aliases = ext.Aliases; if (aliases.ContainsKey(joinAlias)) return query; if (join.Joins != null && join.ReferencedAliases != null) foreach (var alias in join.ReferencedAliases) { if (String.Compare(alias, joinAlias, StringComparison.OrdinalIgnoreCase) == 0) continue; Join other; if (join.Joins.TryGetValue(alias, out other)) EnsureJoin(query, other); } query.Join(join); return query; }
public SqlQuery Join(Join join) { if (join == null) throw new ArgumentNullException("join"); var sb = new StringBuilder(); JoinToString(join, sb, modifySelf: false); string expression = sb.ToString(); string existingExpression; if (!string.IsNullOrEmpty(join.Name) && aliases != null && aliases.TryGetValue(join.Name, out existingExpression)) { if (expression == existingExpression) return this; throw new InvalidOperationException(String.Format("Query already has a join '{0}' with expression '{1}'. " + "Attempted join expression is '{2}'", join.Name, existingExpression, expression)); } if (from.Length > 0) from.Append(" \n"); JoinToString(join, from, modifySelf: true); if (!string.IsNullOrEmpty(join.Name)) ((ISqlQueryExtensible)this).Aliases[join.Name] = expression; return this; }
/// <summary> /// Joins the specified join. /// </summary> /// <param name="join">The join.</param> /// <returns></returns> /// <exception cref="ArgumentNullException">join</exception> /// <exception cref="InvalidOperationException">Another join with different expression is already in the query.</exception> public SqlQuery Join(Join join) { if (join == null) { throw new ArgumentNullException("join"); } var sb = new StringBuilder(); JoinToString(join, sb, modifySelf: false); string expression = sb.ToString(); if (!string.IsNullOrEmpty(join.Name) && aliasExpressions != null && aliasExpressions.TryGetValue(join.Name, out string existingExpression)) { if (expression == existingExpression) { return(this); } throw new InvalidOperationException(string.Format("Query already has a join '{0}' with expression '{1}'. " + "Attempted join expression is '{2}'", join.Name, existingExpression, expression)); } if (from.Length > 0) { from.Append(" \n"); } JoinToString(join, from, modifySelf: true); if (!string.IsNullOrEmpty(join.Name)) { AliasExpressions[join.Name] = expression; if (join as IHaveJoins != null) { AliasWithJoins[join.Name] = join as IHaveJoins; } } return(this); }
public static TField OfJoin <TField>(this TField field, Join join, string origin, FieldFlags extraFlags = FieldFlags.Internal) where TField : Field { if (join == null) { throw new ArgumentNullException("join"); } field.Expression = join.Name + "." + origin; if (field.Flags == FieldFlags.Default) { field.Flags = FieldFlags.Foreign | extraFlags; } else { field.Flags = field.Flags | FieldFlags.Foreign | extraFlags; } return(field); }
public SqlQuery Join(Join join) { if (join == null) { throw new ArgumentNullException("join"); } if (from.Length > 0) { from.Append(" \n"); } from.Append(join.GetKeyword()); from.Append(' '); from.Append(join.Table); // joinAlias belirtilmişse ekle if (!join.Name.IsNullOrEmpty()) { from.Append(' '); from.Append(join.Name); if (aliases == null) { aliases = new HashSet <string>(StringComparer.OrdinalIgnoreCase); } aliases.Add(join.Name); } if (!ReferenceEquals(null, join.OnCriteria) && !join.OnCriteria.IsEmpty) { from.Append(" ON ("); from.Append(join.OnCriteria.ToString(this)); from.Append(')'); } return(this); }
public static SqlQuery EnsureJoin(this SqlQuery query, Join join) { if (join == null) { throw new ArgumentNullException("join"); } var ext = (ISqlQueryExtensible)query; var joinAlias = join.Name; var aliases = ext.Aliases; if (aliases.ContainsKey(joinAlias)) { return(query); } if (join.Joins != null && join.ReferencedAliases != null) { foreach (var alias in join.ReferencedAliases) { if (String.Compare(alias, joinAlias, StringComparison.OrdinalIgnoreCase) == 0) { continue; } Join other; if (join.Joins.TryGetValue(alias, out other)) { EnsureJoin(query, other); } } } query.Join(join); return(query); }
private void JoinToString(Join join, StringBuilder sb, bool modifySelf) { sb.Append(join.GetKeyword()); sb.Append(' '); sb.Append(join.Table); // joinAlias belirtilmişse ekle if (!string.IsNullOrEmpty(join.Name)) { sb.Append(' '); sb.Append(join.Name); } if (!ReferenceEquals(null, join.OnCriteria) && !join.OnCriteria.IsEmpty) { sb.Append(" ON "); if (!(join.OnCriteria is BinaryCriteria)) { sb.Append('('); } if (modifySelf) { sb.Append(join.OnCriteria.ToString(this)); } else { sb.Append(join.OnCriteria.ToStringIgnoreParams()); } if (!(join.OnCriteria is BinaryCriteria)) { sb.Append(')'); } } }
private void JoinToString(Join join, StringBuilder sb, bool modifySelf) { sb.Append(join.GetKeyword()); sb.Append(' '); sb.Append(SqlSyntax.AutoBracketValid(join.Table)); // joinAlias belirtilmişse ekle if (!string.IsNullOrEmpty(join.Name)) { sb.Append(' '); sb.Append(join.Name); } if (join.OnCriteria is object && !join.OnCriteria.IsEmpty) { sb.Append(" ON "); if (!(join.OnCriteria is BinaryCriteria)) { sb.Append('('); } if (modifySelf) { sb.Append(join.OnCriteria.ToString(this)); } else { sb.Append(join.OnCriteria.ToStringIgnoreParams()); } if (!(join.OnCriteria is BinaryCriteria)) { sb.Append(')'); } } }
public SqlQuery EnsureJoin(Join join) { if (join == null) { throw new ArgumentNullException("join"); } var joinAlias = join.Name; if (aliases != null && aliases.Contains(joinAlias)) { return(this); } if (join.Joins != null && join.ReferencedAliases != null) { foreach (var alias in join.ReferencedAliases) { if (String.Compare(alias, joinAlias, StringComparison.OrdinalIgnoreCase) == 0) { continue; } Join other; if (join.Joins.TryGetValue(alias, out other)) { EnsureJoin(other); } } } Join(join); return(this); }
public SqlQuery EnsureJoin(Join join) { if (join == null) throw new ArgumentNullException("join"); var ext = (ISqlQueryExtensible)this; var joinAlias = join.Name; if (aliasExpressions != null && aliasExpressions.ContainsKey(joinAlias)) return this; if (join.Joins != null && join.ReferencedAliases != null) foreach (var alias in join.ReferencedAliases) { if (String.Compare(alias, joinAlias, StringComparison.OrdinalIgnoreCase) == 0) continue; Join other; if (join.Joins.TryGetValue(alias, out other)) EnsureJoin(other); } return Join(join); }