首页 > 代码库 > System.Data.Dbtype转换为System.Data.SqlDbType

System.Data.Dbtype转换为System.Data.SqlDbType

最近在做一些OM Mapping的准备工作,新学了一招。

如果要将System.Data.Dbtype转换为System.Data.SqlDbType,以前以为要写Switch Case语句。其实有很简单的方法:

??????? private System.Data.SqlDbType ConvertToSqlDbType(System.Data.DbType pSourceType)
??????? {
??????????? SqlParameter paraConver = new SqlParameter();
??????????? paraConver.DbType = pSourceType ;
??????????? return paraConver.SqlDbType;
??????? }

微软为你做好了转换。在SqlParameter 中你改变了其中一个就自动改变了另外一个。

?

你也可以做一个自动生成mapping的方法,你想怎么映射就怎么映射,同理也可以对应oracle的类型

?

????????[TestMethod]

public?void?BuildDbTypeToSqlDbType()

{

?

????var?dbTypeFields?=

????Enum.GetValues(typeof(DbType));

?

????foreach?(DbType?dbTypeField?in?dbTypeFields)

????{

????????SqlParameter?p?=?new?SqlParameter();

????????

????????try

????????{

????????????p.DbType?=?dbTypeField;

????????????Console.WriteLine("DbType."?+?dbTypeField.ToString()?+?"?=\t?SqlDbType."?+?p.SqlDbType);

????????}

????????catch?(Exception)

????????{

????????????Console.WriteLine("//?DbType."?+?dbTypeField.ToString()?+?"?=\t?unknown");

????????}

????}

?

}

?

[TestMethod]

public?void?BuildSqlDbTypeToDbType()

{

?

????var?dbTypeFields?=

????Enum.GetValues(typeof(SqlDbType));

?

????foreach?(SqlDbType?sqldbtype?in?dbTypeFields)

????{

????????SqlParameter?p?=?new?SqlParameter();

?

????????try

????????{

????????????p.SqlDbType?=?sqldbtype;

????????????Console.WriteLine("SqlDbType."?+?sqldbtype?+?"?=\t?DbType."?+?p.DbType);

????????}

????????catch?(Exception)

????????{

????????????Console.WriteLine("//?SqlDbType."?+?sqldbtype.ToString()?+?"?=\t?unknown");

????????}

?

????}

?

}