Пример #1
0
        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);
            }
        }
Пример #2
0
        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));
        }
Пример #3
0
        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));
        }
Пример #4
0
        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);
        }