通过数据库SQL操作,直接生成C# DataSet赋值实体类
优点:通过数据库生成赋值实体类代码操作,可避免手动赋值出现代码错误及赋值代码编写效率缓慢问题
SELECT
CONCAT(
'if(',CONCAT('ds.Tables[0].Rows[i][','"',COLUMN_NAME,'"','].ToString()'),' != ""){',
CASE
DATA_TYPE
WHEN 'bigint' THEN
CONCAT('datatb1.',COLUMN_NAME,' = Convert.ToInt32(ds.Tables[0].Rows[i][','"',COLUMN_NAME,'"','].ToString());')
WHEN 'int' THEN
CONCAT('datatb1.',COLUMN_NAME,' = Convert.ToInt32(ds.Tables[0].Rows[i][','"',COLUMN_NAME,'"','].ToString());')
WHEN 'tinyint' THEN
CONCAT('datatb1.',COLUMN_NAME,' = Convert.ToInt32(ds.Tables[0].Rows[i][','"',COLUMN_NAME,'"','].ToString());')
WHEN 'varchar' THEN
CONCAT('datatb1.',COLUMN_NAME,' = ds.Tables[0].Rows[i][','"',COLUMN_NAME,'"','].ToString();')
WHEN 'varbinary' THEN
CONCAT('datatb1.',COLUMN_NAME,' = ds.Tables[0].Rows[i][','"',COLUMN_NAME,'"','].ToString();')
WHEN 'text' THEN
CONCAT('datatb1.',COLUMN_NAME,' = ds.Tables[0].Rows[i][','"',COLUMN_NAME,'"','].ToString();')
WHEN 'char' THEN
CONCAT('datatb1.',COLUMN_NAME,' = ds.Tables[0].Rows[i][','"',COLUMN_NAME,'"','].ToString());' )
WHEN 'datetime' THEN
CONCAT('datatb1.',COLUMN_NAME,' = Convert.ToDateTime(ds.Tables[0].Rows[i][','"',COLUMN_NAME,'"','].ToString());')
WHEN 'bit' THEN
CONCAT('datatb1.',COLUMN_NAME,' = Convert.ToBoolean(ds.Tables[0].Rows[i][','"',COLUMN_NAME,'"','].ToString());' )
WHEN 'decimal' THEN
CONCAT('datatb1.',COLUMN_NAME,' = Convert.Toecimal(ds.Tables[0].Rows[i][','"',COLUMN_NAME,'"','].ToString());' )
END,
'}'
) AS Remark
FROM
information_schema.COLUMNS
WHERE
TABLE_SCHEMA = '数据库名称'
AND TABLE_NAME = '需要赋值实体类代码表名称';
代码执行效果如下
Remark详细内容:
if(ds.Tables[0].Rows[i]["tid"].ToString() != ""){datatb1.tid = Convert.ToInt32(ds.Tables[0].Rows[i]["tid"].ToString());}