Пример #1
0
        public void SetValue(IEntityProxy instance, string columnName, object value, ColumnMapper mapper)
        {
            var parts   = columnName.Split('.');
            var obj     = instance;
            var columns = this;
            var type    = GetObjectType(obj);

            if (typeof(IEntityProxy).IsAssignableFrom(type))
            {
                type = type.BaseType;
            }
            for (int i = 0; i < parts.Length; i++)
            {
                var part         = parts[i];
                var propertyName = columns[part].PropertyName;
                var pi           = type.GetProperty(propertyName);
                if (pi == null || !pi.CanWrite)
                {
                    continue;
                }
                if (i == parts.Length - 1)
                {
                    var mappedValue = mapper.MapToType(value, pi);
                    pi.SetValue(obj, mappedValue);
                    obj.State = EntityState.Unchanged;
                }
                else
                {
                    columns = columns[part].ReferenceTable;
                    obj     = pi.GetValue(obj) as IEntityProxy;
                    type    = GetObjectType(obj);
                }
            }
        }
Пример #2
0
        private object ExecuteScalar(string command)
        {
            Console.WriteLine(command);

            using (var cmd = new SqlCommand(command, _connection))
            {
                cmd.Transaction = _transaction;
                var value = cmd.ExecuteScalar();
                return(ColumnMapper.MapToType(value));
            }
        }
Пример #3
0
        private object ExecuteScalar(string command, params SqlParameter[] args)
        {
            Debug.WriteLine(command);

            try
            {
                using (var cmd = new SqlCommand(command, _connection))
                {
                    foreach (var parameter in args)
                    {
                        cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter(parameter.Name, parameter.Value));
                    }
                    cmd.Transaction = _transaction;
                    var value = cmd.ExecuteScalar();
                    return(ColumnMapper.MapToType(value));
                }
            }
            catch (Exception ex)
            {
                throw new Exception("SQL command failed: " + command, ex);
            }
        }