public Func<object[],IDictionary<string,object>> CreateGetDelegate(string tableName, params object[] keyValues) { var primaryKey = _adapter.GetSchema().FindTable(tableName).PrimaryKey; if (primaryKey == null) throw new InvalidOperationException("Table has no primary key."); if (primaryKey.Length != keyValues.Length) throw new ArgumentException("Incorrect number of values for key."); var commandBuilder = new GetHelper(_adapter.GetSchema()) .GetCommand(_adapter.GetSchema().FindTable(tableName), keyValues); var command = commandBuilder.GetCommand(_adapter.CreateConnection()); command = _adapter.CommandOptimizer.OptimizeFindOne(command); var commandTemplate = commandBuilder.GetCommandTemplate( _adapter.GetSchema().FindTable(_adapter.GetSchema().BuildObjectName(tableName))); var cloneable = command as ICloneable; if (cloneable != null) { return args => ExecuteSingletonQuery((IDbCommand)cloneable.Clone(), args, commandTemplate.Index); } else { return args => ExecuteSingletonQuery(commandTemplate, args); } }
public IDictionary <string, object> Get(string tableName, object[] parameterValues) { var primaryKey = _adapter.GetSchema().FindTable(tableName).PrimaryKey; if (primaryKey == null) { throw new InvalidOperationException(string.Format("Table '{0}' has no primary key.", tableName)); } if (primaryKey.Length != parameterValues.Length) { throw new ArgumentException("Incorrect number of values for key."); } var commandBuilder = new GetHelper(_adapter.GetSchema()).GetCommand(_adapter.GetSchema().FindTable(tableName), parameterValues); var command = commandBuilder.GetCommand(_adapter.CreateConnection(), _adapter.AdoOptions); command = _adapter.CommandOptimizer.OptimizeFindOne(command); var commandTemplate = commandBuilder.GetCommandTemplate( _adapter.GetSchema().FindTable(_adapter.GetSchema().BuildObjectName(tableName))); return(ExecuteSingletonQuery(command, parameterValues, commandTemplate.Index)); }
public Func <object[], IDictionary <string, object> > CreateGetDelegate(string tableName, params object[] keyValues) { var primaryKey = _adapter.GetSchema().FindTable(tableName).PrimaryKey; if (primaryKey == null) { throw new InvalidOperationException(string.Format("Table '{0}' has no primary key.", tableName)); } if (primaryKey.Length != keyValues.Length) { throw new ArgumentException("Incorrect number of values for key."); } var commandBuilder = new GetHelper(_adapter.GetSchema()).GetCommand(_adapter.GetSchema().FindTable(tableName), keyValues); var command = commandBuilder.GetCommand(_adapter.CreateConnection(), _adapter.AdoOptions); command = _adapter.CommandOptimizer.OptimizeFindOne(command); var commandTemplate = commandBuilder.GetCommandTemplate( _adapter.GetSchema().FindTable(_adapter.GetSchema().BuildObjectName(tableName))); var cloneable = command as ICloneable; if (cloneable != null) { return(args => ExecuteSingletonQuery((IDbCommand)cloneable.Clone(), args, commandTemplate.Index)); } return(args => ExecuteSingletonQuery(commandTemplate, args)); }
public IDictionary<string, object> Get(string tableName, object[] parameterValues) { var primaryKey = _adapter.GetSchema().FindTable(tableName).PrimaryKey; if (primaryKey == null) throw new InvalidOperationException("Table has no primary key."); if (primaryKey.Length != parameterValues.Length) throw new ArgumentException("Incorrect number of values for key."); var commandBuilder = new GetHelper(_adapter.GetSchema()).GetCommand(_adapter.GetSchema().FindTable(tableName), parameterValues); var command = commandBuilder.GetCommand(_adapter.CreateConnection(), _adapter.AdoOptions); command = _adapter.CommandOptimizer.OptimizeFindOne(command); var commandTemplate = commandBuilder.GetCommandTemplate( _adapter.GetSchema().FindTable(_adapter.GetSchema().BuildObjectName(tableName))); return ExecuteSingletonQuery(command, parameterValues, commandTemplate.Index); }