Пример #1
0
        private long CreateSelf(IRecord values)
        {
            Debug.Assert(values != null);


            if (this.ContainsField(VersionFieldName) && !values.ContainsKey(VersionFieldName))
            {
                values.Add(VersionFieldName, 0);
            }

            var allColumnNames = from f in values.Keys
                                 let fieldInfo = this.Fields[f]
                                                 where fieldInfo.IsColumn && fieldInfo.Name != IdFieldName
                                                 select f;

            var colValues = new object[allColumnNames.Count()];

            var sql = this.BuildInsertStatement(values, allColumnNames, colValues);

            var rows = this.DbDomain.CurrentSession.DataContext.Execute(sql, colValues);

            if (rows != 1)
            {
                var msg = string.Format("Failed to insert row, SQL: {0}", sql);
                throw new SlipStream.Exceptions.DataException(msg);
            }

            return(this.DbDomain.CurrentSession.DataContext.GetLastIdentity(this.TableName));
        }