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
浙公网安备 33010602011771号