public void EndsWithParameter() { SqlString sql = new SqlString(new object[] { "", "select", " from table where id = ", Parameter.Placeholder }); Assert.IsFalse(sql.EndsWith("'")); Assert.IsFalse(sql.EndsWith("")); }
public void EndsWithEmptyString() { SqlString sql = new SqlString(new string[] { "", "select", " from table", "" }); Assert.IsTrue(sql.EndsWith("ble")); Assert.IsFalse(sql.EndsWith("'")); }
public override SqlString ApplyLocksToSql(SqlString sql, IDictionary <string, LockMode> aliasedLockModes, IDictionary <string, string[]> keyColumnNames) { // TODO: merge additional lockoptions support in Dialect.applyLocksToSql var buffer = new StringBuilder(sql.ToString()); int correction = 0; foreach (KeyValuePair <string, LockMode> entry in aliasedLockModes) { LockMode mode = entry.Value; if (mode.GreaterThan(LockMode.Read)) { string alias = entry.Key; int start = -1; int end = -1; if (sql.EndsWith(" " + alias)) { start = (sql.Length - alias.Length) + correction; end = start + alias.Length; } else { int position = sql.IndexOfCaseInsensitive(" " + alias + " "); if (position <= -1) { position = sql.IndexOfCaseInsensitive(" " + alias + ","); } if (position > -1) { start = position + correction + 1; end = start + alias.Length; } } if (start > -1) { string lockHint = AppendLockHint(mode, alias); buffer.Remove(start, end - start + 1); buffer.Insert(start, lockHint); correction += (lockHint.Length - alias.Length); } } } return(new SqlString(buffer.ToString())); }