예제 #1
0
        private static void SetupUpdate(IMapping <T> Mapping, IEnumerable <IMapping> ParentMappings)
        {
            Contract.Requires <ArgumentNullException>(Mapping != null, "Mapping");
            if (!string.IsNullOrEmpty(Mapping.UpdateCommand))
            {
                return;
            }
            string ParameterList = "";
            string IDProperties  = "";
            int    Count         = 0;
            string Separator     = "";
            string Splitter      = "";

            foreach (IProperty Property in Mapping.Properties.Where(x => x is IMap || x is IReference))
            {
                if (!Property.AutoIncrement)
                {
                    ParameterList += Splitter + Property.FieldName + "=@" + Count;
                    Splitter       = ",";
                    ++Count;
                }
            }
            foreach (IProperty Property in Mapping.IDProperties)
            {
                IDProperties += Separator + Property.FieldName + "=@" + Count;
                Separator     = " AND ";
                ++Count;
            }

            Mapping.SetUpdateCommand(string.Format(CultureInfo.InvariantCulture,
                                                   "UPDATE {0} SET {1} WHERE {2}",
                                                   Mapping.TableName,
                                                   ParameterList,
                                                   IDProperties),
                                     CommandType.Text);
        }