/// <summary> /// Reads fields. /// </summary> /// <param name="process">The process.</param> /// <param name="sr">The reader.</param> private void ReadFields(ProcessEditDto process, SafeDataReader sr) { sr.NextResult(); int? sectionId = null; SectionDto section = null; var times = new List<double>(); while (sr.Read()) { var start = DateTime.Now; var fieldDto = new FieldDto { Id = sr.GetInt32(0), Name = sr.GetSafeString(1, string.Empty).Replace(@"""", "''"), FieldTypeId = sr.GetInt32(2), SectionId = sr.GetInt32(3), Width = sr.GetDouble(4), RowSpan = sr.GetInt(5), ShowInList = sr.GetBoolean(6), IncludeInFilter = sr.GetBoolean(7), HideFromDetails = sr.GetBoolean(8), SystemName = sr.GetString(9), Position = sr.GetInt32(10), CopyFieldValueOnCopyItem = sr.GetBool(11), DeepCopy = sr.GetBool(12), Guid = sr.GetGuid(13), SearchPosition = sr.GetInt(14), SearchWidth = sr.GetInt(15), IsBase = sr.GetBoolean(16), UseInGlobalSearch = sr.GetBoolean(19), PublishedCopyId = sr.GetNullableInt(21), AllowLocalizedData = sr.GetBoolean("AllowLocalizedData") }; if (fieldDto.SectionId != sectionId || section == null) { section = process.Sections.First(s => s.Id == fieldDto.SectionId); sectionId = fieldDto.SectionId; } fieldDto.FieldTypeInfo = new FieldTypeDto { Id = fieldDto.FieldTypeId, Name = sr.GetString(17), DataType = sr.GetString(18), CanBeRequired = sr.GetBoolean(20) }; section.FieldList.Add(fieldDto); times.Add((DateTime.Now - start).TotalMilliseconds); } Profiler.Profile(() => this.ReadFieldEditors(process, sr)); }