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

????????}

?

????}

?

}

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

时间: 2024-11-05 18:56:51

System.Data.Dbtype转换为System.Data.SqlDbType的相关文章

报错:无法将类型"System.Data.EntityState"隐式转换为"System.Data.Entity.EntityState"

报错:无法将类型"System.Data.EntityState"隐式转换为"System.Data.Entity.EntityState" 原因一: using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Data.Entity; 是否引用了System.Data.Entity   是则:db.Ent

错误描述:请求“System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”类型的权限已失败

错误描述:请求“System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”类型的权限已失败. 解决办法:在配置文件web.config中<trust></trust>节点,把<trust level="WSS_Minimal" originUrl=""

fastboot 刷system.img 提示 sending &#39;system&#39; (*KB)... FAILED (remote: data too large)

华为G6-C00卡刷提示OEMSBL错误,只能线刷 ,但是官方找不到线刷img镜像,无奈 网上下了个可以线刷的工具套件 流氓ROM . 使用HuaweiUpdateExtractor(工具百度)把官方 UPDATA.APP 中三个镜像文件全部提取出来 尝试使用 下面命令 fastboot flash boot boot.img fastboot flash recovery recovery.img fastboot flash system system.img 最后一步出错 提示 sendi

5 Ways to Use Log Data to Analyze System Performance--reference

Recently we looked across some of the most common behaviors that our community of 25,000 users looked for in their logs with a particular focus on web server logs. In fact our research identified the top 15 web server tags and alerts created by our c

编译器错误消息: CS0122: “System.Data.DataRow.DataRow(System.Data.DataRowBuilder)”不可访问,因为它受保护级别限制

编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地修改源代码. 编译器错误消息: CS0122: "System.Data.DataRow.DataRow(System.Data.DataRowBuilder)"不可访问,因为它受保护级别限制 源错误:   行 17: 行 18: DataTable dt = new DataTable(); 行 19: System.Data.DataRow r = new DataRow(); 行

System.Data.DataRow.DataRow(System.Data.DataRowBuilder 因为它受保护级别限制 如何解决,解决办法

错误 1 "System.Data.DataRow.DataRow(System.Data.DataRowBuilder)"不可访问,因为它受保护级别限制 原因:DataRow dr= new DataRow();    // 错误,DataRow 不能直接new 解决办法: DataRow dr :或者,使用DataTable dt = new DataTable(); //对应的行,使用dt[],例如第一行  dt[0]

(C# Debug)A first chance exception of type &#39;System.ArgumentException&#39; occurred in System.Data.dll

Debug 模式下运行程序的时候,Output 窗口出来个错误“A first chance exception of type 'System.ArgumentException' occurred in System.Data.dll”. 但是并没有直接throw错误.无法知道具体在哪一步发生了这个错误. 如果想知道具体的内容,需要enable 这个debug If you do want to know, in Visual Studio -> Debug (main menu) ->

NotSupportedException-无法将类型“System.DateTime”强制转换为类型“System.Object”

几张图就可以说明一切 2015-03-29 21:54:09,206 [77] ERROR log - System.NotSupportedException: 无法将类型“System.DateTime”强制转换为类型“System.Object”.LINQ to Entities 仅支持强制转换 EDM 基元或枚举类型. 在 System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.ValidateAndAdjustCastType

错误 128 无法将类型“string”隐式转换为“System.Windows.Forms.DataGridViewTextBoxColumn”

原因是DataGridView中列的Name属性值和DataPropertyName属性值一样,比如Name="CardID",DataPropertyName="CardID",这样会出现 :错误 128 无法将类型"string"隐式转换为"System.Windows.Forms.DataGridViewTextBoxColumn"