diff --git a/Apewer/Source/OrmHelper.cs b/Apewer/Source/OrmHelper.cs index 28ab1b5..51eec96 100644 --- a/Apewer/Source/OrmHelper.cs +++ b/Apewer/Source/OrmHelper.cs @@ -138,69 +138,43 @@ namespace Apewer.Source } if (attribute == null) continue; + // 读取值。 + var value = query.Value(r, attribute.Field); + if (value == null) continue; + if (value.Equals(DBNull.Value)) continue; + // 根据属性类型设置值。 var pt = property.PropertyType; - if (pt.Equals(typeof(object)) || pt.Equals(typeof(Nullable))) - { - setter.Invoke(record, new object[] { query.Value(r, attribute.Field) }); - } - else if (pt.Equals(typeof(DateTime))) - { - var value = query.Value(r, attribute.Field); - if (value != null) setter.Invoke(record, new object[] { query.Value(r, attribute.Field) }); - } - else if (pt.Equals(typeof(byte[]))) - { - setter.Invoke(record, new object[] { (byte[])query.Value(r, attribute.Field) }); - } - else if (pt.Equals(typeof(byte))) - { - setter.Invoke(record, new object[] { Byte(query.Text(r, attribute.Field)) }); - } - else if (pt.Equals(typeof(sbyte))) - { - setter.Invoke(record, new object[] { SByte(query.Text(r, attribute.Field)) }); - } - else if (pt.Equals(typeof(short))) - { - setter.Invoke(record, new object[] { Int16(query.Text(r, attribute.Field)) }); - } - else if (pt.Equals(typeof(ushort))) - { - setter.Invoke(record, new object[] { UInt16(query.Text(r, attribute.Field)) }); - } - else if (pt.Equals(typeof(int))) - { - setter.Invoke(record, new object[] { Int32(query.Text(r, attribute.Field)) }); - } - else if (pt.Equals(typeof(uint))) - { - setter.Invoke(record, new object[] { UInt32(query.Text(r, attribute.Field)) }); - } - else if (pt.Equals(typeof(long))) - { - setter.Invoke(record, new object[] { Int64(query.Text(r, attribute.Field)) }); - } - else if (pt.Equals(typeof(ulong))) - { - setter.Invoke(record, new object[] { UInt64(query.Text(r, attribute.Field)) }); - } - else if (pt.Equals(typeof(float))) - { - setter.Invoke(record, new object[] { Single(query.Text(r, attribute.Field)) }); - } - else if (pt.Equals(typeof(double))) - { - setter.Invoke(record, new object[] { Double(query.Text(r, attribute.Field)) }); - } - else if (pt.Equals(typeof(decimal))) - { - setter.Invoke(record, new object[] { Decimal(query.Text(r, attribute.Field)) }); - } - else if (pt.Equals(typeof(string))) - { - setter.Invoke(record, new object[] { query.Text(r, attribute.Field) }); - } + if (pt.Equals(typeof(object))) setter.Invoke(record, new object[] { value }); + else if (pt.Equals(typeof(byte[]))) setter.Invoke(record, new object[] { (byte[])value }); + else if (pt.Equals(typeof(string))) setter.Invoke(record, new object[] { value.ToString() }); + + else if (pt.Equals(typeof(DateTime))) setter.Invoke(record, new object[] { value }); + else if (pt.Equals(typeof(byte))) setter.Invoke(record, new object[] { Byte(value) }); + else if (pt.Equals(typeof(sbyte))) setter.Invoke(record, new object[] { SByte(value) }); + else if (pt.Equals(typeof(short))) setter.Invoke(record, new object[] { Int16(value) }); + else if (pt.Equals(typeof(ushort))) setter.Invoke(record, new object[] { UInt16(value) }); + else if (pt.Equals(typeof(int))) setter.Invoke(record, new object[] { Int32(value) }); + else if (pt.Equals(typeof(uint))) setter.Invoke(record, new object[] { UInt32(value) }); + else if (pt.Equals(typeof(long))) setter.Invoke(record, new object[] { Int64(value) }); + else if (pt.Equals(typeof(ulong))) setter.Invoke(record, new object[] { UInt64(value) }); + else if (pt.Equals(typeof(float))) setter.Invoke(record, new object[] { Single(value) }); + else if (pt.Equals(typeof(double))) setter.Invoke(record, new object[] { Double(value) }); + else if (pt.Equals(typeof(decimal))) setter.Invoke(record, new object[] { Decimal(value) }); + + else if (pt.Equals(typeof(Nullable))) setter.Invoke(record, new object[] { new Nullable((DateTime)value) }); + else if (pt.Equals(typeof(Nullable))) setter.Invoke(record, new object[] { new Nullable(Byte(value) ) }); + else if (pt.Equals(typeof(Nullable))) setter.Invoke(record, new object[] { new Nullable(SByte(value) ) }); + else if (pt.Equals(typeof(Nullable))) setter.Invoke(record, new object[] { new Nullable(Int16(value) ) }); + else if (pt.Equals(typeof(Nullable))) setter.Invoke(record, new object[] { new Nullable(UInt16(value) ) }); + else if (pt.Equals(typeof(Nullable))) setter.Invoke(record, new object[] { new Nullable(Int32(value) ) }); + else if (pt.Equals(typeof(Nullable))) setter.Invoke(record, new object[] { new Nullable(UInt32(value) ) }); + else if (pt.Equals(typeof(Nullable))) setter.Invoke(record, new object[] { new Nullable(Int64(value) ) }); + else if (pt.Equals(typeof(Nullable))) setter.Invoke(record, new object[] { new Nullable(UInt64(value) ) }); + else if (pt.Equals(typeof(Nullable))) setter.Invoke(record, new object[] { new Nullable(Single(value) ) }); + else if (pt.Equals(typeof(Nullable))) setter.Invoke(record, new object[] { new Nullable(Double(value) ) }); + else if (pt.Equals(typeof(Nullable))) setter.Invoke(record, new object[] { new Nullable(Decimal(value) ) }); + else { try diff --git a/Apewer/_Common.props b/Apewer/_Common.props index 6a8502c..6251927 100644 --- a/Apewer/_Common.props +++ b/Apewer/_Common.props @@ -14,7 +14,7 @@ Apewer Libraries - 6.5.0 + 6.5.1 diff --git a/ChangeLog.md b/ChangeLog.md index 1e330f9..3df978c 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,6 +1,9 @@  ### 最新提交 +### 6.5.1 +- Source:修正 Fill DateTime 报错的问题。 + ### 6.5.0 - Cron:新增 CronAttribute,取代 Source 中的 Cron,并支持 Dispose; - Json:修正 Json 转为 T[] 的问题;