コード例 #1
0
ファイル: Updater.cs プロジェクト: mzabani/SqlBuilder
        private SqlFragment CreateUpdateStatement(ObjectAndColumns reg)
        {
            SqlFragment query = new SqlFragment("UPDATE " + reg.table + " SET ");

            // Update fields section
            for (int i = 0; i < reg.chosenPropsOrFields.Count; i++)
            {
                var getter = reg.chosenPropsOrFields.ElementAt(i);

                if (i == reg.chosenPropsOrFields.Count - 1)
                {
                    query.AppendText("{0}=", getter.Key)
                    .AppendParameter(getter.Value(reg.obj));
                }
                else
                {
                    query.AppendText("{0}=", getter.Key)
                    .AppendParameter(getter.Value(reg.obj))
                    .AppendText(",");
                }
            }

            // WHERE id=?
            query.AppendText(" WHERE {0}=", reg.idColumn)
            .AppendParameter(reg.idGetter(reg.obj));

            return(query);
        }
コード例 #2
0
ファイル: Updater.cs プロジェクト: mzabani/SqlBuilder
        public void Update <T>(string table, Object obj, Expression <Func <T, Object> > idGetterExpr, params Expression <Func <T, Object> >[] getterExprs)
        {
            ObjectAndColumns reg = new ObjectAndColumns {
                table = table,
                chosenPropsOrFields = new Dictionary <string, GetValue>(getterExprs.Length),
                idColumn            = ExpressionTreeHelper.GetPropOrFieldNameFromLambdaExpr <T>(idGetterExpr),
                obj = obj
            };

            var tempGetters = CachedTypeData.FetchGettersOf <T>();

            // Only add the ones we want
            foreach (var getterExpr in getterExprs)
            {
                string propOrFieldName = ExpressionTreeHelper.GetPropOrFieldNameFromLambdaExpr <T>(getterExpr);
                reg.chosenPropsOrFields.Add(propOrFieldName, tempGetters[propOrFieldName]);
            }
            // Add the id getter
            reg.idGetter = tempGetters[reg.idColumn];

            regs.Add(reg);
        }