private static void NewDataRow(DataSet dataSet, IList <IColumn <TReader> > columns, TReader reader) { var model = dataSet.Model; model.SuspendIdentity(); dataSet.AddRow(x => { for (int i = 0; i < columns.Count; i++) { var column = columns[i]; if (!column.IsReadOnly(x)) { column.Read(reader, x); } } x.IsPrimaryKeySealed = true; }); model.ResumeIdentity(); }
/// <summary> /// Create a tab data response model /// </summary> /// <param name="response">Xml response</param> /// <returns>Response model</returns> public static WindowTabDataResponse CreateWindowTabDataResponse(XmlDocument response) { WindowTabDataResponse responseModel = new WindowTabDataResponse(); if (HasFaultError(responseModel, response)) { return(responseModel); } XmlNodeList xmlError = response.GetElementsByTagName("Error"); if (xmlError.Count > 0) { responseModel.Status = WebServiceResponseStatus.Error; responseModel.ErrorMessage = xmlError.Item(0).InnerText; return(responseModel); } XmlNodeList xmlSuccess = response.GetElementsByTagName("Success"); if (xmlSuccess.Count > 0) { if (!bool.Parse(xmlSuccess.Item(0).InnerText)) { responseModel.Status = WebServiceResponseStatus.Unsuccessful; return(responseModel); } } responseModel.Status = WebServiceResponseStatus.Successful; XmlNodeList xmlWindowTabData = response.GetElementsByTagName("WindowTabData"); if (xmlWindowTabData.Count > 0) { XmlNode nodeNumRows = xmlWindowTabData.Item(0).Attributes.GetNamedItem("NumRows"); if (nodeNumRows != null) { string stringNumRows = nodeNumRows.Value.Trim(); if (!string.IsNullOrEmpty(stringNumRows)) { responseModel.NumRows = int.Parse(stringNumRows); } } XmlNode nodeTotalRows = xmlWindowTabData.Item(0).Attributes.GetNamedItem("TotalRows"); if (nodeTotalRows != null) { string stringTotalRows = nodeTotalRows.Value.Trim(); if (!string.IsNullOrEmpty(stringTotalRows)) { responseModel.TotalRows = int.Parse(stringTotalRows); } } XmlNode nodeStartRow = xmlWindowTabData.Item(0).Attributes.GetNamedItem("StartRow"); if (nodeStartRow != null) { string stringStartRow = nodeStartRow.Value.Trim(); if (!string.IsNullOrEmpty(stringStartRow)) { responseModel.StartRow = int.Parse(stringStartRow); } } } DataSet dataSet = new DataSet(); responseModel.DataSet = dataSet; XmlNodeList xmlDataSet = response.GetElementsByTagName("DataRow"); for (int i = 0; i < xmlDataSet.Count; i++) { DataRow dataRow = new DataRow(); dataSet.AddRow(dataRow); XmlElement xmlDataRow = (XmlElement)xmlDataSet.Item(i); XmlNodeList xmlDataFields = xmlDataRow.GetElementsByTagName("field"); for (int j = 0; j < xmlDataFields.Count; j++) { Field field = new Field(); dataRow.AddField(field); XmlElement xmlDataField = (XmlElement)xmlDataFields.Item(j); field.Column = xmlDataField.Attributes.GetNamedItem("column").Value; if (xmlDataField.GetElementsByTagName("val").Item(0).InnerText == null) { field.Value = ""; } else { field.Value = xmlDataField.GetElementsByTagName("val").Item(0).InnerText; } } } return(responseModel); }
/// <summary> /// Метод для генерации набора данных на основе текущей модели /// </summary> /// <returns></returns> public List <DataSet> CreateDataSet() { Columns = new ObservableCollection <DbDataColumn>(Columns.Where(column => column.IsValid())); var result = new List <DataSet>((int)Math.Ceiling((decimal)RowsCount / ButchSize)); var dataSet = new DataSet( Columns.ToDictionary(column => column.Name, column => column.Type) ); var random = new Random(); long minDate = new DateTime(1900, 1, 1).Ticks; long maxDate = DateTime.Now.Ticks; for (int i = 0; i < RowsCount; i++) { object[] rowData = new object[this.Columns.Count]; for (int j = 0; j < Columns.Count; j++) { if (j == 0) { // Первичный ключ rowData[j] = i + 1; } else { DbDataColumn column = Columns[j]; object value; switch (column.Type) { case DataType.Number: value = random.Next(int.MinValue, int.MaxValue); break; case DataType.Boolean: value = random.Next(0, 1) == 1; break; case DataType.Date: value = RandomDate(minDate, maxDate, random); break; case DataType.String: value = RandomString(16, random); break; default: value = null; break; } rowData[j] = value; } } dataSet.AddRow(rowData); } int copied = 0; while (copied < dataSet.Rows.Count) { result.Add(dataSet.Slice(copied, ButchSize)); copied += ButchSize; } return(result); }
private static void AddRow(DataSet <DirectoryTreeItem> folders, string path) { var dataRow = folders.AddRow((_, x) => _.Path[x] = path); folders._.SubFolders.GetChildDataSet(dataRow).AddRow(); }