Пример #1
0
        private static void SetupInsert(IMapping Mapping, IEnumerable <IMapping> ParentMappings)
        {
            Contract.Requires <ArgumentNullException>(Mapping != null, "Mapping");
            if (!string.IsNullOrEmpty(Mapping.InsertCommand))
            {
                return;
            }

            string ParameterList = "";
            string ValueList     = "";
            string Splitter      = "";
            int    Counter       = 0;

            foreach (IProperty Property in Mapping.Properties.Where(x => x is IMap || x is IReference))
            {
                if (!Property.AutoIncrement)
                {
                    ParameterList += Splitter + Property.FieldName;
                    ValueList     += Splitter + "@" + Counter;
                    Splitter       = ",";
                    ++Counter;
                }
            }
            foreach (IProperty Property in Mapping.IDProperties)
            {
                if (!Property.AutoIncrement)
                {
                    ParameterList += Splitter + Property.FieldName;
                    ValueList     += Splitter + "@" + Counter;
                    Splitter       = ",";
                    ++Counter;
                }
            }
            Mapping.SetInsertCommand(string.Format(CultureInfo.InvariantCulture,
                                                   "INSERT INTO {0}({1}) VALUES({2}) SELECT scope_identity() as [{3}]",
                                                   Mapping.TableName,
                                                   ParameterList,
                                                   ValueList,
                                                   Mapping.IDProperties.Count > 0 ? Mapping.IDProperties.FirstOrDefault().Name : "ID"),
                                     CommandType.Text);
        }