建立自己的ORM-从SQL2005中生成ORM数据类(.net)

 现在有很多开发ORM的工具,象本人自己使用Grove.但是有时候因为业务需要不得不定制一些自己的ORM类以满足需求.

下面是用SQL2005直接生成数据类的实例:输出方式改为:以文本形式显示结果.

EXEC CreateDorNetFile 'DP_SalesCounter'

--数据表字段说明直接作为类属性的说明

  1.     public class DP_SalesCounter
  2.     {
  3.         private String _SalesCounterID;
  4.         private String _SalesCounterCode;
  5.         private String _SalesCounterName;
  6.         private String _ZoneID;
  7.         private String _SalesDepartmentID;
  8.         private Boolean _IsAgent;
  9.         private String _AgentID;
  10.         private Boolean _IsControlCenter;
  11.         /// <summary>
  12.         ///柜台ID
  13.         /// </summary>
  14.         public String SalesCounterID
  15.         {
  16.             get { return _SalesCounterID; }
  17.             set { SalesCounterID = value; }
  18.         }
  19.         /// <summary>
  20.         ///柜台代码
  21.         /// </summary>
  22.         public String SalesCounterCode
  23.         {
  24.             get { return _SalesCounterCode; }
  25.             set { SalesCounterCode = value; }
  26.         }
  27.         /// <summary>
  28.         ///柜台名称
  29.         /// </summary>
  30.         public String SalesCounterName
  31.         {
  32.             get { return _SalesCounterName; }
  33.             set { SalesCounterName = value; }
  34.         }
  35.         /// <summary>
  36.         ///地区ID
  37.         /// </summary>
  38.         public String ZoneID
  39.         {
  40.             get { return _ZoneID; }
  41.             set { ZoneID = value; }
  42.         }
  43.         /// <summary>
  44.         ///所属部门ID
  45.         /// </summary>
  46.         public String SalesDepartmentID
  47.         {
  48.             get { return _SalesDepartmentID; }
  49.             set { SalesDepartmentID = value; }
  50.         }
  51.         /// <summary>
  52.         ///是否代理
  53.         /// </summary>
  54.         public Boolean IsAgent
  55.         {
  56.             get { return _IsAgent; }
  57.             set { IsAgent = value; }
  58.         }
  59.         /// <summary>
  60.         ///代理商ID
  61.         /// </summary>
  62.         public String AgentID
  63.         {
  64.             get { return _AgentID; }
  65.             set { AgentID = value; }
  66.         }
  67.         /// <summary>
  68.         ///是否中心
  69.         /// </summary>
  70.         public Boolean IsControlCenter
  71.         {
  72.             get { return _IsControlCenter; }
  73.             set { IsControlCenter = value; }
  74.         }
  75.     }

需要用到的过程与函数

  1. CREATE FUNCTION [dbo].[ConvertSQLTypeToDorNetType](@SQLType VARCHAR(50))
  2. RETURNS VARCHAR(50)
  3. AS
  4. /*
  5. 把SQL类型转换为.NET数据类型
  6. */
  7. BEGIN
  8.     DECLARE @DorNetTyp VARCHAR(50)
  9.     SET @DorNetTyp=''
  10.     SET @SQLType=RTRIM(LTRIM(@SQLType))
  11.     IF @SQLType='bigint'
  12.         SET @DorNetTyp='Int64'
  13.     ELSE IF @SQLType='binary'
  14.         SET @DorNetTyp='Byte[]' 
  15.     ELSE IF @SQLType='bit'
  16.         SET @DorNetTyp='Boolean'
  17.     ELSE IF @SQLType='char'
  18.         SET @DorNetTyp='String'
  19.     ELSE IF @SQLType='datetime'
  20.         SET @DorNetTyp='DateTime'
  21.     ELSE IF @SQLType='decimal'
  22.         SET @DorNetTyp='Decimal'
  23.     ELSE IF @SQLType='float'
  24.         SET @DorNetTyp='Double'
  25.     ELSE IF @SQLType='image'
  26.         SET @DorNetTyp='Byte[]'
  27.     ELSE IF @SQLType='int'
  28.         SET @DorNetTyp='Int32'
  29.     ELSE IF @SQLType='money'
  30.         SET @DorNetTyp='Decimal'
  31.     ELSE IF @SQLType='nchar'
  32.         SET @DorNetTyp='char'
  33.     ELSE IF @SQLType='ntext'
  34.         SET @DorNetTyp='String'
  35.     ELSE IF @SQLType='numeric'
  36.         SET @DorNetTyp='Decimal'
  37.     ELSE IF @SQLType='nvarchar'
  38.         SET @DorNetTyp='String'
  39.     ELSE IF @SQLType='real'
  40.         SET @DorNetTyp='Single'
  41.     ELSE IF @SQLType='smalldatetime'
  42.         SET @DorNetTyp='DateTime'
  43.     ELSE IF @SQLType='smallint'
  44.         SET @DorNetTyp='Int16'
  45.     ELSE IF @SQLType='smallmoney'
  46.         SET @DorNetTyp='Decimal'
  47.     ELSE IF @SQLType='sql_variant'
  48.         SET @DorNetTyp='Object'
  49.     ELSE IF @SQLType='sysname'
  50.         SET @DorNetTyp='String'
  51.     ELSE IF @SQLType='text'
  52.         SET @DorNetTyp='String'
  53.     ELSE IF @SQLType='timestamp'
  54.         SET @DorNetTyp='DateTime'
  55.     ELSE IF @SQLType='tinyint'
  56.         SET @DorNetTyp='Byte'
  57.     ELSE IF @SQLType='uniqueidentifier'
  58.         SET @DorNetTyp='Guid'
  59.     ELSE IF @SQLType='varbinary'
  60.         SET @DorNetTyp='Byte[]'
  61.     ELSE IF @SQLType='varchar'
  62.         SET @DorNetTyp='String'
  63.     ELSE IF @SQLType='xml'
  64.         SET @DorNetTyp='String'
  65.     RETURN @DorNetTyp
  66. END
  1. CREATE PROC [dbo].[CreateDorNetFile]
  2. @TABLE VARCHAR(50)
  3. AS
  4. /*
  5. 根据表生成.NET数据类
  6. */
  7. SELECT 'public class '+@TABLE+dbo.SystemNewLine()+'{'
  8. UNION ALL
  9. SELECT 'private '+dbo.ConvertSQLTypeToDorNetType(systypes.name)+' _'+syscolumns.name +';' FROM syscolumns
  10. LEFT JOIN systypes ON syscolumns.xtype=systypes.xtype
  11. WHERE ID IN (SELECT ID FROM sysObjects WHERE Name=@TABLE) 
  12. UNION ALL
  13. SELECT dbo.SystemNewTab()
  14. UNION ALL
  15. SELECT
  16. '/// <summary>'+dbo.SystemNewLine()+
  17. '///'+cast(isnull(sys.extended_properties.value,''as varchar(50))+dbo.SystemNewLine()+
  18. '/// </summary>'+dbo.SystemNewLine()+
  19. 'public '+dbo.ConvertSQLTypeToDorNetType(systypes.name)+' '+syscolumns.name  
  20. +dbo.SystemNewLine()+'{'+dbo.SystemNewLine()+
  21. +dbo.SystemNewTab()+'get{ return _'+syscolumns.name +' ; }' 
  22. +dbo.SystemNewLine()+
  23. +dbo.SystemNewTab()+'set{ '+syscolumns.name +' = value ; }' 
  24. +dbo.SystemNewLine()+'}'
  25. FROM syscolumns
  26. LEFT JOIN systypes ON syscolumns.xtype=systypes.xtype
  27. LEFT JOIN sys.extended_properties  ON syscolumns.ID=sys.extended_properties.major_id and syscolumns.colorder=sys.extended_properties.minor_id
  28. WHERE ID IN (SELECT ID FROM sysObjects WHERE Name=@TABLE) 
  29. UNION ALL
  30. SELECT '}'

两个字符函数

  1. create FUNCTION [dbo].[SystemNewTab]()
  2. RETURNS VARCHAR(50)
  3. AS
  4. BEGIN
  5. RETURN '    '
  6. END
  7. CREATE FUNCTION [dbo].[SystemNewLine]()
  8. RETURNS VARCHAR(50)
  9. AS
  10. BEGIN
  11. RETURN CHAR(13)
  12. END

希望对个位有所帮助

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
适合人群: 1、具有一定Python语言基础,有一定的web前端基础,想要深入学习Python Web框架的朋友; 2、学习完“跟着王进老师学开发Python篇”“跟着王进老师学Web前端开发”的朋友; 3、有Django基础,但是想学习企业级项目实战的朋友; 4、喜欢 Django 框架并想深入研究的朋友; 5、有一定的数据库基础   课程目标:本系列课程是从零基础开始并深入讲解Django,最终学会使用Django框架开发企业级的项目。课程知识点全网最详细,项目实战贴近企业需求。本系列课程除了非常详细的讲解Django框架本身的知识点以外,还讲解了web开发所需要用到的技术,学完本系列课程后,您将独立做出一个具有后台管理系统,并且前端非常优美实用的网站。   课程内容:在人工智能大行其道的时代,许多开发者对Python这门编程语言都比较熟悉。但是如何用它实现一个企业级别的项目,可能许多朋友还存在一些困惑。联科教育“跟着王进老师学Python”系列课程是专门针对想要从事Python Web开发的朋友而准备的,并且按照企业需求的标准定制的学习路线。学习路线包含Python基础和进阶、Web前端、MySQL数据库、Flask和Django框架以及N多个企业真实项目。在学习完本系列所有的课程后,从前端页面的实现,到后台代码的编写,再到数据库的管理,一人可以搞定一个公司网站的事情,掌握实现全栈开发,让你升职加薪不是梦! 本季课程介绍了DjangoORM模型,使用ORM模型的优势;DjangoORM模型常用的字段,ORM实现数据查询;Django后台管理等。所有应用均通过案例“在线图书商城”完成讲解和演示,完整项目,贯穿全部知识点,边学边练,帮助大家快速掌握知识,了解企业要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值