Merge branch 'master' of http://git.newlifex.com/NewLife/NewLife.XCode
* 'master' of http://git.newlifex.com/NewLife/NewLife.XCode: 修复实体中属性为枚举值且继承自Int64时,值超过Int32.MaxValue时,不能入库的问题。
This commit is contained in:
commit
62acf904b5
|
@ -416,7 +416,21 @@ public class ClassBuilder
|
|||
// 特殊支持枚举
|
||||
var type2 = type.GetTypeEx();
|
||||
if (type2 != null && type2.IsEnum)
|
||||
WriteLine("case \"{0}\": {0} = ({1})value.ToInt(); break;", column.Name, type);
|
||||
{
|
||||
var enumType = Enum.GetUnderlyingType(type2);
|
||||
switch (enumType.Name)
|
||||
{
|
||||
case "Int32":
|
||||
WriteLine("case \"{0}\": {0} = ({1})value.ToInt(); break;", column.Name, type);
|
||||
break;
|
||||
case "Int64":
|
||||
WriteLine("case \"{0}\": {0} = ({1})value.ToLong(); break;", column.Name, type);
|
||||
break;
|
||||
default:
|
||||
WriteLine("case \"{0}\": {0} = ({1})value.ToInt(); break;", column.Name, type);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
WriteLine("case \"{0}\": {0} = ({1})value; break;", column.Name, type);
|
||||
}
|
||||
|
|
|
@ -821,7 +821,17 @@ public class EntityBuilder : ClassBuilder
|
|||
}
|
||||
// 特殊支持枚举
|
||||
else if (column.DataType != null && column.DataType.IsInt())
|
||||
WriteLine("case \"{0}\": _{0} = ({1})value.ToInt(); break;", column.Name, type);
|
||||
{
|
||||
switch (column.DataType.Name)
|
||||
{
|
||||
case "Int64":
|
||||
WriteLine("case \"{0}\": _{0} = ({1})value.ToLong(); break;", column.Name, type);
|
||||
break;
|
||||
default:
|
||||
WriteLine("case \"{0}\": _{0} = ({1})value.ToInt(); break;", column.Name, type);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var method = "To";
|
||||
|
|
|
@ -858,7 +858,10 @@ abstract class DbBase : DisposeBase, IDatabase
|
|||
if (value == null) return isNullable ? "null" : "";
|
||||
|
||||
// 枚举
|
||||
if (type != null && type.IsEnum) type = typeof(Int32);
|
||||
if (type != null && type.IsEnum)
|
||||
{
|
||||
type = Enum.GetUnderlyingType(type);
|
||||
}
|
||||
|
||||
// 转为目标类型,比如枚举转为数字
|
||||
if (type != null) value = value.ChangeType(type);
|
||||
|
|
|
@ -414,7 +414,19 @@ partial class DbMetaData
|
|||
if (isArrayField) type = type.GetElementType();
|
||||
|
||||
// 处理枚举
|
||||
if (type.IsEnum) type = typeof(Int32);
|
||||
if (type.IsEnum)
|
||||
{
|
||||
var trueType = Enum.GetUnderlyingType(type);
|
||||
switch (trueType.Name)
|
||||
{
|
||||
case "Int64":
|
||||
type = typeof(long);
|
||||
break;
|
||||
default:
|
||||
type = typeof(Int32);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!Types.TryGetValue(type, out var ns)) return null;
|
||||
|
||||
|
|
Loading…
Reference in New Issue