/// <summary> /// An immediate identity insert with identity_insert on just for this single entity, unless queued is true. Queued identity insert entities are inserted if nothing given. /// </summary> /// <param name="sqlEntity"></param> public void IdentityInsert(TSqlEntity sqlEntity = null, Boolean queued = false) { if (sqlEntity == null) { FlushIdentityInserts(); return; } // Queue identity insert... IModifiable modifiableEntity = sqlEntity as IModifiable; if (modifiableEntity != null) { modifiableEntity.CreatedDate = NowDateTime; modifiableEntity.ModifiedDate = NowDateTime; } else if (sqlEntity is ICreatable) { ((ICreatable)sqlEntity).CreatedDate = NowDateTime; } var insertColumns = $"{GetIdentityInsertColumns()},{InsertColumns()}"; var insertValues = $"{GetIdentityInsertValues(sqlEntity)},{GetInsertValues(sqlEntity)}"; QueuedIdentityInserts.Append(QueueIdentityInsertColumnsPattern.FormatX(TableName, insertColumns, insertValues)); if (!queued) { FlushIdentityInserts(); } }
public void FlushIdentityInserts() { if (QueuedIdentityInserts.IsEmpty()) { return; } if (SaveChangesTransactionally) { Context.BeginTransaction(); } String insertStatement = IdentityInsertColumnsPattern.FormatX(QueuedIdentityInserts.ToString(), TableName); _queuedIdentityInserts = null; Context.ExecuteScalar(insertStatement, new SqlParameter[] { }); }