发现一个很猛的存储过程,可以生成实体类的Get,Set方法,代码不难写,但是很有创意.有时候轻轻用一下还是很好的

记录下来

ALTER PROCEDURE usp_TableToClass
/*
Generates C# class code for a table
and fields/properties for each column.
 
Run as "Results to Text" or "Results to File" (not Grid)
 
Example: EXEC usp_TableToClass 'MyTable'
*/
@table_name SYSNAME
 
AS
 
SET NOCOUNT ON
 
DECLARE @temp TABLE
(
sort INT,
code TEXT
)
 
INSERT INTO @temp
SELECT 1, 'public class '   @table_name   CHAR(13)   CHAR(10)   '{'
 
INSERT INTO @temp
SELECT 2, CHAR(13)   CHAR(10)   '#region Constructors'   CHAR(13)   CHAR(10)
INSERT INTO @temp
SELECT 3, CHAR(9)   'public '   @table_name   '()'
  CHAR(13)   CHAR(10)   CHAR(9)   '{'
  CHAR(13)   CHAR(10)   CHAR(9)   '}'
 
INSERT INTO @temp
SELECT 4, '#endregion'   CHAR(13)   CHAR(10)
 
INSERT INTO @temp
SELECT 5, '#region Private Fields'   CHAR(13)   CHAR(10)
INSERT INTO @temp
SELECT 6, CHAR(9)   'private '  
CASE
WHEN DATA_TYPE LIKE '%CHAR%' THEN 'string '
WHEN DATA_TYPE LIKE '%INT%' THEN 'int '
WHEN DATA_TYPE LIKE '�TETIME%' THEN 'DateTime '
WHEN DATA_TYPE LIKE '%BINARY%' THEN 'byte[] '
WHEN DATA_TYPE = 'BIT' THEN 'bool '
WHEN DATA_TYPE LIKE '%TEXT%' THEN 'string '
ELSE 'object '
END   '_'   COLUMN_NAME   ';'   CHAR(9)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @table_name
ORDER BY ORDINAL_POSITION
 
INSERT INTO @temp
SELECT 7, '#endregion'  
CHAR(13)   CHAR(10)
 
INSERT INTO @temp
SELECT 8, '#region Public Properties'   CHAR(13)   CHAR(10)
INSERT INTO @temp
SELECT 9, CHAR(9)   'public '  
CASE
WHEN DATA_TYPE LIKE '%CHAR%' THEN 'string '
WHEN DATA_TYPE LIKE '%INT%' THEN 'int '
WHEN DATA_TYPE LIKE '�TETIME%' THEN 'DateTime '
WHEN DATA_TYPE LIKE '%BINARY%' THEN 'byte[] '
WHEN DATA_TYPE = 'BIT' THEN 'bool '
WHEN DATA_TYPE LIKE '%TEXT%' THEN 'string '
ELSE 'object '
END   COLUMN_NAME  
CHAR(13)   CHAR(10)   CHAR(9)   '{'  
CHAR(13)   CHAR(10)   CHAR(9)   CHAR(9)  
'get { return _'   COLUMN_NAME   '; }'  
CHAR(13)   CHAR(10)   CHAR(9)   CHAR(9)  
'set { _'   COLUMN_NAME   ' = value; }'  
CHAR(13)   CHAR(10)   CHAR(9)   '}'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @table_name
ORDER BY ORDINAL_POSITION
 
INSERT INTO @temp
SELECT 10, '#endregion'  
CHAR(13)   CHAR(10)   '}'
 
SELECT code FROM @temp
ORDER BY sort

调用方法

EXEC usp_TableToClass B1C_Auth_UserSpecialPermission

生成的结果

public class B1C_Auth_UserSpecialPermission
{

#region Constructors

	public B1C_Auth_UserSpecialPermission()
	{
	}
#endregion

#region Private Fields

	private string _UserID;	
	private string _FunctionAlias;	
	private int _CURD;	
	private string _CompanyID;	
	private string _Scope;	
	private string _SpecialPermissionNote;	
#endregion

#region Public Properties

	public string UserID
	{
		get { return _UserID; }
		set { _UserID = value; }
	}
	public string FunctionAlias
	{
		get { return _FunctionAlias; }
		set { _FunctionAlias = value; }
	}
	public int CURD
	{
		get { return _CURD; }
		set { _CURD = value; }
	}
	public string CompanyID
	{
		get { return _CompanyID; }
		set { _CompanyID = value; }
	}
	public string Scope
	{
		get { return _Scope; }
		set { _Scope = value; }
	}
	public string SpecialPermissionNote
	{
		get { return _SpecialPermissionNote; }
		set { _SpecialPermissionNote = value; }
	}
#endregion
}


生成代码很方便,但是这个应该是个老版本了,明显不符合现在的编码风格嘛,果断改一下

ALTER PROCEDURE [dbo].[usp_TableToClass]
/*
Generates C# class code for a table
and fields/properties for each column.
 
Run as "Results to Text" or "Results to File" (not Grid)
 
Example: EXEC usp_TableToClass 'MyTable'
*/
@table_name SYSNAME
 
AS
 
SET NOCOUNT ON
 
DECLARE @temp TABLE
(
sort INT,
code TEXT
)
 
INSERT INTO @temp
SELECT 1, 'public class '   @table_name   CHAR(13)   CHAR(10)   '{' 
 
INSERT INTO @temp
SELECT 8, '#region Public Properties'   CHAR(13)   CHAR(10)
INSERT INTO @temp
SELECT 9, CHAR(9)   'public '  
CASE
WHEN DATA_TYPE LIKE '%CHAR%' THEN 'string '
WHEN DATA_TYPE LIKE '%INT%' THEN 'int '
WHEN DATA_TYPE LIKE '�TETIME%' THEN 'DateTime '
WHEN DATA_TYPE LIKE '%BINARY%' THEN 'byte[] '
WHEN DATA_TYPE = 'BIT' THEN 'bool '
WHEN DATA_TYPE LIKE '%TEXT%' THEN 'string '
ELSE 'object '
END   COLUMN_NAME  
CHAR(13)   CHAR(10)   CHAR(9)   '{'  
CHAR(13)   CHAR(10)   CHAR(9)   CHAR(9)  
'get;'  
CHAR(13)   CHAR(10)   CHAR(9)   CHAR(9)  
'set;'  
CHAR(13)   CHAR(10)   CHAR(9)   '}'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @table_name
ORDER BY ORDINAL_POSITION
 
INSERT INTO @temp
SELECT 10, '#endregion'  
CHAR(13)   CHAR(10)   '}'
 
SELECT code FROM @temp
ORDER BY sort

调用方式不变,结果

public class B1C_Auth_UserSpecialPermission
{
#region Public Properties

	public string UserID
	{
		get;
		set;
	}
	public string FunctionAlias
	{
		get;
		set;
	}
	public int CURD
	{
		get;
		set;
	}
	public string CompanyID
	{
		get;
		set;
	}
	public string Scope
	{
		get;
		set;
	}
	public string SpecialPermissionNote
	{
		get;
		set;
	}
#endregion
}

看着舒服多了,哈哈


Leave a Reply