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); }