見つけるための最良の方法は何ですか System.Data.DbType
System名前空間の基本クラスライブラリタイプの列挙値?
一般的な方法は、サポートされているすべてのタイプ(さまざまなコネクタ/プロバイダーがさまざまなタイプを明示的にマップ)でタイプマップを持つことです。 Dapper のタイプマップは次のとおりです。
typeMap = new Dictionary<Type, DbType>();
typeMap[typeof(byte)] = DbType.Byte;
typeMap[typeof(sbyte)] = DbType.SByte;
typeMap[typeof(short)] = DbType.Int16;
typeMap[typeof(ushort)] = DbType.UInt16;
typeMap[typeof(int)] = DbType.Int32;
typeMap[typeof(uint)] = DbType.UInt32;
typeMap[typeof(long)] = DbType.Int64;
typeMap[typeof(ulong)] = DbType.UInt64;
typeMap[typeof(float)] = DbType.Single;
typeMap[typeof(double)] = DbType.Double;
typeMap[typeof(decimal)] = DbType.Decimal;
typeMap[typeof(bool)] = DbType.Boolean;
typeMap[typeof(string)] = DbType.String;
typeMap[typeof(char)] = DbType.StringFixedLength;
typeMap[typeof(Guid)] = DbType.Guid;
typeMap[typeof(DateTime)] = DbType.DateTime;
typeMap[typeof(DateTimeOffset)] = DbType.DateTimeOffset;
typeMap[typeof(byte[])] = DbType.Binary;
typeMap[typeof(byte?)] = DbType.Byte;
typeMap[typeof(sbyte?)] = DbType.SByte;
typeMap[typeof(short?)] = DbType.Int16;
typeMap[typeof(ushort?)] = DbType.UInt16;
typeMap[typeof(int?)] = DbType.Int32;
typeMap[typeof(uint?)] = DbType.UInt32;
typeMap[typeof(long?)] = DbType.Int64;
typeMap[typeof(ulong?)] = DbType.UInt64;
typeMap[typeof(float?)] = DbType.Single;
typeMap[typeof(double?)] = DbType.Double;
typeMap[typeof(decimal?)] = DbType.Decimal;
typeMap[typeof(bool?)] = DbType.Boolean;
typeMap[typeof(char?)] = DbType.StringFixedLength;
typeMap[typeof(Guid?)] = DbType.Guid;
typeMap[typeof(DateTime?)] = DbType.DateTime;
typeMap[typeof(DateTimeOffset?)] = DbType.DateTimeOffset;
typeMap[typeof(System.Data.Linq.Binary)] = DbType.Binary;
関連するDbTypeを取得するために必要なことは、次のとおりです。
var type = typeMap[typeof(string)]; // returns DbType.String
_System.Web.UI.WebControls.Parameter
_クラスのメソッドTypeCode
を使用して、DbType
をConvertTypeCodeToDbType
に変換できます: Parameter.ConvertTypeCodeToDbType Method 。 TypeCodeを取得するには、メソッドType.GetTypeCode(Type type)
を使用できます。
ドキュメントをご覧ください- SQL Serverデータ型マッピング(ADO.NET) 。
他のプロバイダーのマッピングも documented です。
これらは、コンバータを記述するのに十分な情報を提供します。
私は自動化されたロジックを認識していません。マッピングは自分で行う必要があります。これらは異なるタイプであり、.NET Frameworkがあなただけでこれを行うことはできないからです。
マッピングテーブル全体を参照してください: SQL Serverデータ型マッピング(ADO.NET) Oracle、MySQL、sqLiteおよびその他のエンジンの場合は、 .NETデータプロバイダー/接続にも依存する同様のテーブル