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");
}
}
}