Exemplo n.º 1
0
        public SetClause(UpdateQuery <T> parentQuery, object setFields) :
            this(parentQuery)
        {
            var setFieldsType = setFields.GetType();

            if (!string.IsNullOrEmpty(setFieldsType.Namespace) || setFieldsType.IsIEnumerable())
            {
                throw new Exception("Set clause only supports anonymous parameters.");
            }

            var entityMap      = EntityMapper.Entities[typeof(T)];
            var setFieldsProps = setFieldsType.GetProperties();
            var propMapDefault = default(PropertyMap);
            var paramGen       = ParentQuery.ParameterNameGenerator;
            FieldParameterPairs = new List <KeyValuePair <string, PropertyMap> >();

            foreach (var setFieldPropInfo in setFieldsProps)
            {
                var propMap = entityMap.Properties.FirstOrDefault(p => p.Name == setFieldPropInfo.Name);

                if (propMap == propMapDefault)
                {
                    throw new Exception(string.Format("Property {0} does not exists for entity {1}", setFieldPropInfo.Name, typeof(T).ToString()));
                }

                var paramName  = paramGen.GetNextParameterName(propMap.Name);
                var paramValue = setFieldsType.GetProperty(propMap.Name).GetValue(setFields);

                ParentQuery.Parameters.Add(paramName, paramValue);

                FieldParameterPairs.Add(new KeyValuePair <string, PropertyMap>(paramName, propMap));
            }
        }
Exemplo n.º 2
0
        public SetClause(UpdateQuery <T> parentQuery)
        {
            this.ParentQuery = parentQuery;

            FieldsToUpate = ParentQuery.Fields.Where(f => !f.IsAutoIncrement &&
                                                     !f.IsReadOnly &&
                                                     !f.Ignored &&
                                                     !f.IsComputed &&
                                                     f.IsTableField)
                            .OrderBy(f => f.OrdinalPosition);

            if (parentQuery.Entity != null)
            {
                GenerateFieldParameterPairs(FieldsToUpate);
                AddToQueryParameters();
            }
        }