예제 #1
0
        /// <summary>
        /// Reads the JSON representation of the object.
        /// </summary>
        /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
        /// <param name="objectType">Type of the object.</param>
        /// <param name="existingValue">The existing value of object being read.</param>
        /// <param name="serializer">The calling serializer.</param>
        /// <returns>The object value.</returns>
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            // handle typed datasets
            DataSet ds = (objectType == typeof(DataSet))
                ? new DataSet()
                : (DataSet)Activator.CreateInstance(objectType);

            DataTableConverter converter = new DataTableConverter();

            CheckedRead(reader);

            while (reader.TokenType == JsonToken.PropertyName)
            {
                DataTable dt = ds.Tables[(string)reader.Value];
                bool exists = (dt != null);

                dt = (DataTable)converter.ReadJson(reader, typeof(DataTable), dt, serializer);

                if (!exists)
                    ds.Tables.Add(dt);

                CheckedRead(reader);
            }

            return ds;
        }
예제 #2
0
    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        var dataResult = value as DataResult;

            #region 序列化DataResult对象

            writer.WriteStartObject();
            // 写total属性
            writer.WritePropertyName("total");
            serializer.Serialize(writer, dataResult.Total);
            // 写pagecount属性
            writer.WritePropertyName("pagecount");
            serializer.Serialize(writer, dataResult.PageCount);
            // 写pageindex属性
            writer.WritePropertyName("pageindex");
            serializer.Serialize(writer, dataResult.PageIndex);

            // 写rows属性
            var converter = new DataTableConverter();
            writer.WritePropertyName("rows");
            converter.WriteJson(writer, dataResult.Data, serializer);
            writer.WriteEndObject();

            #endregion
    }
예제 #3
0
        /// <summary>
        /// Writes the JSON representation of the object.
        /// </summary>
        /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
        /// <param name="value">The value.</param>
        /// <param name="serializer">The calling serializer.</param>
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            DataSet dataSet = (DataSet)value;
            DefaultContractResolver resolver = serializer.ContractResolver as DefaultContractResolver;

            DataTableConverter converter = new DataTableConverter();

            writer.WriteStartObject();

            foreach (DataTable table in dataSet.Tables)
            {
                writer.WritePropertyName((resolver != null) ? resolver.GetResolvedPropertyName(table.TableName) : table.TableName);

                converter.WriteJson(writer, table, serializer);
            }

            writer.WriteEndObject();
        }
예제 #4
0
        private DataTable findBookings()
        {
            List <Booking> booking = (sqliteContext.ExecuteQuery <Booking>("SELECT * FROM Booking")).ToList();

            return(DataTableConverter.from(booking));
        }
예제 #5
0
 public void NullArrayDataRow()
 {
     DataRow[] adr = null;
     Assert.ThrowsException <ArgumentNullException>(() => DataTableConverter <Convertible> .ToEntities(adr));
 }
예제 #6
0
        public void NullIEnumerableDataRow()
        {
            IEnumerable <DataRow> idr = null;

            Assert.ThrowsException <ArgumentNullException>(() => DataTableConverter <Convertible> .ToEntities(idr));
        }
예제 #7
0
 public void DataRowCollectionNullColumnToPropertyMap()
 {
     //TODO: Figure out why this test fails even though it should be succeeding - This exception is thrown immediately and
     //manual testing confirms it is being thrown. Like seriously, what the hell is this even doing?
     Assert.ThrowsException <ArgumentNullException>(() => DataTableConverter <Convertible> .ToEntities(testTable.Value.Rows, null));
 }
예제 #8
0
        public void NullDataRowCollection()
        {
            DataRowCollection drc = null;

            Assert.ThrowsException <ArgumentNullException>(() => DataTableConverter <Convertible> .ToEntities(drc));
        }
예제 #9
0
        public void EmptyDataRowCollection()
        {
            DataTable dt = new DataTable();

            Assert.ThrowsException <ArgumentException>(() => DataTableConverter <Convertible> .ToEntities(dt.Rows));
        }
예제 #10
0
        public void NullDataTable()
        {
            DataTable nullDt = null;

            Assert.ThrowsException <ArgumentNullException>(() => DataTableConverter <Convertible> .ToEntities(nullDt));
        }