zoukankan      html  css  js  c++  java
  • 用存储过程生成实体类

    下面是一个根据网上资料修改, 用来的生成实体类的SQL Server存储过程代码:

    IF EXISTS (select * FROM dbo.sysobjects WHERE id = object_id(N'procGenerateEntityClass') AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
    DROP PROCEDURE procGenerateEntityClass
    GO
    /*======================================================================
    Business Entity Class Generator
    This SP accepts a DATABASE object (table, view) name's parameter AND
    generates (C# code) custom entity class based ON the object's fields
    Sample Usage:
    USE Northwind
    EXEC procGenerateEntityClass 'Shippers'
    Author:Leon C. Tayson

    Modified By: Jack Tang
    Modify Date: 2008-12-4
    ======================================================================*/
    CREATE PROCEDURE procGenerateEntityClass
    @ObjectName varchar(100)
    AS
    DECLARE @name varchar(20),
      @type varchar(20)

    DECLARE objCursor CURSOR
    FOR
    SELECT sc.name, st.name type FROM syscolumns sc
    INNER JOIN systypes st
    ON st.xusertype = sc.xusertype
    WHERE Id=OBJECT_ID(@ObjectName)

    DECLARE @propertyCodes varchar(8000)

    SET @propertyCodes = ''

    OPEN objCursor
    FETCH NEXT FROM objCursor
    INTO @name, @type

    DECLARE @cType varchar(20)-- C# type

    IF @@FETCH_STATUS <> 0
        BEGIN
      CLOSE objCursor
      DEALLOCATE objCursor
      PRINT 'Error... Please CHECK passed parameter'
      RETURN
     END

    WHILE @@FETCH_STATUS = 0
        BEGIN
      -- 将SQL Server数据库数据类型转换为C#数据类型
      SET @cType =
      CASE
      WHEN @type LIKE '%char%' OR @type LIKE '%text%'
       THEN 'string'
      WHEN @type IN ('decimal', 'numeric')
       THEN 'double'
      WHEN @type = 'real'
       THEN 'float'
      WHEN @type LIKE '%money%'
       THEN 'decimal'
      WHEN @type = 'bit'
       THEN 'bool'
      WHEN @type = 'bigint'
       THEN 'long'
      WHEN @type LIKE '%int%'
       THEN 'int'
      WHEN @type = 'datetime'
       THEN 'DateTime'  
      ELSE
       @type
      END

      SET @propertyCodes = @propertyCodes + CHAR(9) + 'public ' + @ctype + ' ' + @name + '{ get; set; }' + CHAR(13) + CHAR(13)

      FETCH NEXT FROM objCursor
      INTO @name, @type

     END

    --PRINT '[Serializable]'
    PRINT 'public class ' + @ObjectName + 'Info'
    PRINT '{'
    PRINT ''
    PRINT CHAR(9) + 'public ' + @ObjectName + 'Info()'
    PRINT CHAR(9) + '{'
    PRINT CHAR(9) + '}'
    PRINT ''
    PRINT @propertyCodes
    PRINT '}'
    CLOSE objCursor
    DEALLOCATE objCursor

    参考资料地址: http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=1039&lngWId=5

  • 相关阅读:
    【Leetcode周赛】从contest-81开始。(一般是10个contest写一篇文章)
    【LeetCode】抽样 sampling(共4题)
    【LeetCode】拓扑排序 topological-sort(共5题)
    【LeetCode】几何学 geometry(共2题)
    【读书笔记】C/C++程序员面试秘籍
    【读书笔记】程序员面试笔记
    【sql】牛客网练习题 (共 61 题)
    HDU 6119 小小粉丝度度熊 双指针
    2017多校第7场 HDU 6128 Inverse of sum 推公式或者二次剩余
    2017多校第7场 HDU 6121 Build a tree K叉树,思维
  • 原文地址:https://www.cnblogs.com/jacktang/p/1352176.html
Copyright © 2011-2022 走看看