• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
ZeTee
有龙自远方来不亦乐乎
博客园    首页    新随笔    联系   管理    订阅  订阅
SQL Server 生成c#实体类

exec createEntity '表名或者视图名'

/*============  用途:利用存储过程来生成实体类   ============*/ 
 alter PROC createEntity @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 @declarationCodes varchar(8000),  @ctorCodes varchar(8000),  @propertyCodes varchar(8000) 
 SET @declarationCodes = '' 
 SET @ctorCodes = '' 
 SET @propertyCodes = '' 
 OPEN objCursor  FETCH NEXT FROM objCursor  INTO @name, @type 
 DECLARE @cType varchar(20) -- C# type
    DECLARE @ctorParms varchar(4000) 
    SET @ctorParms = '' 
    IF @@FETCH_STATUS <> 0         
    BEGIN     
     CLOSE objCursor     
     DEALLOCATE objCursor     
     PRINT 'Error... Please CHECK passed parameter'    
     RETURN
    END
       WHILE @@FETCH_STATUS = 0        
       BEGIN      SET @cType =      
       CASE      WHEN @type LIKE '%char%' OR @type LIKE '%text%'       THEN 'string'  
          WHEN @type IN ('decimal', 'numeric')      THEN 'decimal'     
          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
      --PRINT CHAR(9) + 'private ' + @ctype +       ' ' + '_' + @name + ';'
       SET @declarationCodes = @declarationCodes + CHAR(9) + 'private ' + @ctype + ' ' + '_' + LOWER(@name) + ';' + CHAR(13)
         SET @ctorCodes = ''
         SET @ctorParms = @ctorParms + @ctype + ' ' + LOWER(@name) + ', '
          SET @propertyCodes = @propertyCodes + CHAR(9) + 'public ' + @ctype + ' ' + @name + CHAR(13) +  CHAR(9) + '{' + CHAR(13) +  CHAR(9) + CHAR(9) + 'get { return _' + LOWER(@name) + '; }' + CHAR(13) +  CHAR(9) + CHAR(9) + 'set { _' + LOWER(@name) + ' = value; }' + CHAR(13) +  CHAR(9) + '}' + CHAR(13) 
          FETCH NEXT FROM objCursor  INTO @name, @type 
       END
            PRINT '[Serializable]'  PRINT 'public class ' + @ObjectName + 'Info'  PRINT '{'  PRINT @declarationCodes  PRINT ''  PRINT CHAR(9) + 'public ' + @ObjectName + 'Info()'  PRINT CHAR(9) + '{'  PRINT @ctorCodes  PRINT CHAR(9) + '}'  PRINT ''  PRINT @propertyCodes  PRINT '}' 
      CLOSE objCursor 
      DEALLOCATE objCursor

posted on 2011-04-12 12:33  zetee  阅读(2765)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3