private void addParametersToCommand(IBaseCommand command, List<FieldData> listFieldData) { foreach (FieldData fieldData in listFieldData) { if (fieldData.ObjectType == typeof(Byte[])) command.Add("@" + fieldData.FieldName, fieldData.ObjectValue, DbType.Binary); else command.Add("@" + fieldData.FieldName, fieldData.ObjectValue); } }
/// <summary> /// Заполняет параметры команды в соответствии со значениями свойств, помеченных DBReadAttribute. /// </summary> /// <param name="command">Команда</param> /// <param name="obj">Объект</param> /// <param name="withPrimaryKey">Добавлять ли параметр, соотв. первичному ключу.</param> /// /// TODO: Переписать с использованием GetDBColumnsValues private static void FillCommandParameters(IBaseCommand command, object obj, bool withPrimaryKey) { // получаем тип объекта Type objType = obj.GetType(); // перебираем его свойства (публичные нестатические) foreach (PropertyInfo prop in objType.GetProperties(BindingFlags.Public | BindingFlags.Instance)) { DBReadAttribute dbReadAttribute = DBAttributesManager.GetDBReadAttribute(prop); if (dbReadAttribute != null && (!dbReadAttribute.PrimaryKey || dbReadAttribute.PrimaryKey && withPrimaryKey)) { if (prop.PropertyType == typeof(MLString)) { MLString value = (MLString)ObjectPropertiesMapper.GetPropertyValue(prop, obj); command.Add("@" + dbReadAttribute.FieldName + RussianEnding, value[CultureManager.Languages.Russian]); command.Add("@" + dbReadAttribute.FieldName + EnglishEnding, value[CultureManager.Languages.English]); } else if (prop.PropertyType == typeof(TNKBPIdentifier)) { TNKBPIdentifier value = (TNKBPIdentifier)ObjectPropertiesMapper.GetPropertyValue(prop, obj); command.Add("@" + dbReadAttribute.FieldName, value.ToString()); } else { command.Add("@" + dbReadAttribute.FieldName, ObjectPropertiesMapper.GetPropertyValue(prop, obj)); } } } }