/**********************************************************************************************************/ internal DbType GetType(ParamTypeEnum colType, Type realType, Context dc) { if (realType == null) { return(DbType.AnsiString); } else if (XConfig.DbTypeFuncs.TryGetValue(realType, out var func)) { return(func(dc, colType)); } else if (realType.IsEnum) { return(GetType(colType, Enum.GetUnderlyingType(realType), dc)); } else if (realType.FullName == XConfig.CSTC.LinqBinary) { return(DbType.Binary); } else if (XConfig.CSTC.IEnumerableT.IsAssignableFrom(realType)) { return((DbType)(-1)); } else { throw XConfig.EC.Exception(XConfig.EC._032, $"不支持的字段参数类型:[[{realType}]]!"); } }
DbType IDbTypeConfig.GuidProc(Context dc, ParamTypeEnum colType) { switch (dc.DB) { case DbEnum.MySQL: return(MySql.GuidProc(dc, colType)); default: return(DbType.Guid); } }
DbType IDbTypeConfig.IntProc(Context dc, ParamTypeEnum colType) { if (colType == ParamTypeEnum.Int_MySQL_SqlServer) { return(DbType.Int32); } else { return(DbType.Int32); } }
DbType IDbTypeConfig.DateTimeProc(Context dc, ParamTypeEnum colType) { if (colType == ParamTypeEnum.DateTime_MySQL_SqlServer) { return(DbType.AnsiString); } else { return(DbType.DateTime2); } }
DbType IDbTypeConfig.ByteArrayProc(Context dc, ParamTypeEnum colType) { switch (dc.DB) { case DbEnum.MySQL: return(MySql.ByteArrayProc(dc, colType)); default: return(DbType.Binary); } }
DbType IDbTypeConfig.UshortProc(Context dc, ParamTypeEnum colType) { if (colType == ParamTypeEnum.SmallInt_MySQL_SqlServer) { return(DbType.UInt16); } else { return(DbType.UInt16); } }
DbType IDbTypeConfig.TimeSpanProc(Context dc, ParamTypeEnum colType) { if (colType == ParamTypeEnum.Time_MySQL_SqlServer) { return(DbType.Time); } else { return(DbType.Time); } }
DbType IDbTypeConfig.SbyteProc(Context dc, ParamTypeEnum colType) { if (colType == ParamTypeEnum.TinyInt_MySQL_SqlServer) { return(DbType.Int16); } else { return(DbType.SByte); } }
DbType IDbTypeConfig.UlongProc(Context dc, ParamTypeEnum colType) { if (colType == ParamTypeEnum.BigInt_MySQL_SqlServer) { return(DbType.UInt64); } else { return(DbType.UInt64); } }
DbType IDbTypeConfig.FloatProc(Context dc, ParamTypeEnum colType) { if (colType == ParamTypeEnum.Float_MySQL_SqlServer) { return(DbType.Single); } else { return(DbType.Single); } }
DbType IDbTypeConfig.DoubleProc(Context dc, ParamTypeEnum colType) { if (colType == ParamTypeEnum.Double_MySQL) { return(DbType.Double); } else { return(DbType.Double); } }
DbType IDbTypeConfig.CharProc(Context dc, ParamTypeEnum colType) { if (colType == ParamTypeEnum.VarChar_MySQL_SqlServer) { return(DbType.AnsiString); } else { return(DbType.AnsiString); } }
DbType IDbTypeConfig.ListStringProc(Context dc, ParamTypeEnum colType) { if (colType == ParamTypeEnum.Set_MySQL) { return(DbType.String); } else { return(DbType.AnsiString); } }
DbType IDbTypeConfig.DecimalProc(Context dc, ParamTypeEnum colType) { if (colType == ParamTypeEnum.Decimal_MySQL_SqlServer) { return(DbType.Decimal); } else { return(DbType.Decimal); } }
DbType IDbTypeConfig.UshortProc(Context dc, ParamTypeEnum colType) { switch (dc.DB) { case DbEnum.MySQL: return(MySql.UshortProc(dc, colType)); default: return(DbType.UInt16); } }
DbType IDbTypeConfig.DateTimeOffsetProc(Context dc, ParamTypeEnum colType) { switch (dc.DB) { case DbEnum.MySQL: return(MySql.DateTimeOffsetProc(dc, colType)); default: return(DbType.DateTimeOffset); } }
DbType IDbTypeConfig.GuidProc(Context dc, ParamTypeEnum colType) { if (colType == ParamTypeEnum.Char_MySQL_SqlServer) { return(DbType.AnsiStringFixedLength); } else { return(DbType.Guid); } }
DbType IDbTypeConfig.ListStringProc(Context dc, ParamTypeEnum colType) { switch (dc.DB) { case DbEnum.MySQL: return(MySql.ListStringProc(dc, colType)); default: return(DbType.String); } }
DbType IDbTypeConfig.BoolProc(Context dc, ParamTypeEnum colType) { if (colType == ParamTypeEnum.Bit_MySQL_SqlServer) { return(DbType.Int16); } else { return(DbType.Boolean); } }
DbType IDbTypeConfig.ListStringProc(Context dc, ParamTypeEnum colType) { switch (dc.DB) { case DbEnum.MySQL: return(MySql.ListStringProc(dc, colType)); case DbEnum.SQLServer: throw XConfig.EC.Exception(XConfig.EC._091, "sql server 不支持 set 类型的列!"); default: return(DbType.String); } }
DbType IDbTypeConfig.BoolProc(Context dc, ParamTypeEnum colType) { switch (dc.DB) { case DbEnum.MySQL: return(MySql.BoolProc(dc, colType)); case DbEnum.SQLServer: return(SqlServer.BoolProc(dc, colType)); default: return(DbType.Boolean); } }
DbType IDbTypeConfig.FloatProc(Context dc, ParamTypeEnum colType) { switch (dc.DB) { case DbEnum.MySQL: return(MySql.FloatProc(dc, colType)); case DbEnum.SQLServer: return(SqlServer.FloatProc(dc, colType)); default: return(DbType.Single); } }
DbType IDbTypeConfig.UlongProc(Context dc, ParamTypeEnum colType) { switch (dc.DB) { case DbEnum.MySQL: return(MySql.UlongProc(dc, colType)); case DbEnum.SQLServer: return(SqlServer.UlongProc(dc, colType)); default: return(DbType.UInt64); } }
DbType IDbTypeConfig.StringProc(Context dc, ParamTypeEnum colType) { switch (dc.DB) { case DbEnum.MySQL: return(MySql.StringProc(dc, colType)); case DbEnum.SQLServer: return(SqlServer.StringProc(dc, colType)); default: return(DbType.AnsiString); } }
DbType IDbTypeConfig.ByteArrayProc(Context dc, ParamTypeEnum colType) { return(DbType.Binary); }
DbType IDbTypeConfig.CharProc(Context dc, ParamTypeEnum colType) { return(DbType.StringFixedLength); }
DbType IDbTypeConfig.DoubleProc(Context dc, ParamTypeEnum colType) { return(DbType.Double); }
DbType IDbTypeConfig.FloatProc(Context dc, ParamTypeEnum colType) { return(DbType.Single); }
DbType IDbTypeConfig.ShortProc(Context dc, ParamTypeEnum colType) { return(DbType.Int16); }
DbType IDbTypeConfig.SbyteProc(Context dc, ParamTypeEnum colType) { return(DbType.SByte); }