最近在做一些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");
????????}
?
????}
?
}