如何以编程方式将SQL数据类型转换为.Net数据类型?

Sim*_*mon 7 .net sql-server code-generation

任何人都可以向我展示一种将SQL Server数据类型(例如varchar)转换为.Net数据类型(例如String)的方法.我假设自动转换是不可能的?我有一个'EntityProperty'对象,并希望它有一个适当的'Type'属性(字符串,十进制,int32等),此时此属性只是一个字符串 - 例如'int32'.

一点背景:我在内部代码生成应用程序中使用SQL DMO来查询数据库并从数据库生成基于DAL的存储过程.作为一个内部应用程序,我可以采取相当多的快捷方式,并作出一些假设.为了使应用程序正常运行,此数据类型转换由Select Case语句处理,该语句只将类型转换为字符串并根据这些字符串生成一组属性,但我更愿意处理这些属性类型(使用TypeOf等).

有人在做类似的事吗?

我知道EF,nHibernate,Subsonic等可以为我做这一切,但在这种情况下,出于各种原因,我不得不自己动手.:)

Chr*_*isA 6

硬编码是一件坏事的原因只是因为当你把代码放在代码中改变时,它很烦人(并且很昂贵) - 没有其他原因.不会发生变化的事情,如pi或工作日列表,可以根据您的内容进行硬编码,因此您不会产生任何额外的开发成本.

所以这个问题并不是关于不维护手动映射表 - 如果必要的话在代码中 - 因为它只是在一个地方维护映射表.

几年前,我们推出了自己的数据访问类.当然,我们手动(在VB.NET Select Case语句中)从.NET类型转换为SQL类型.当我们不得不添加Enum类型时,我认为它改变了一次.

这是一次,大约四年.我们平均每周发布一次 - 猜猜我们对于硬编码.NET - > SQL类型映射的'开销'有多担心?

在一个地方做.确保一切都使用它.然后忘记它.还有其他更棘手的问题需要解决.


dan*_*n04 2

我在另一个方向上做了类似的事情,使用 System.Type 对象的字典到 SQL 类型名称。