利用SQL生成模型实体类

declare @TableName sysname = 'tabname'
declare @Result varchar(max) = '
/// <summary>
///  ' +  @TableName +
    
'    
/// </summary>
public class ' + @TableName + '
{'

select @Result = @Result + '
	/// <summary>
    /// ' +  CONVERT(NVARCHAR(500), ISNULL(ColName, '无')) +
    
'    
    /// </summary>
    public ' + ColumnType + NullableSign + ' ' + ColumnName + ' { get; set; }
'
from
(
    SELECT
        replace(col.name, ' ', '_') ColumnName,
        column_id ColumnId,
        prop.value ColName,
        case typ.name
            when 'bigint' then 'long'
            when 'binary' then 'byte[]'
            when 'bit' then 'bool'
            when 'char' then 'string'
            when 'date' then 'DateTime'
            when 'datetime' then 'DateTime'
            when 'datetime2' then 'DateTime'
            when 'datetimeoffset' then 'DateTimeOffset'
            when 'decimal' then 'decimal'
            when 'float' then 'float'
            when 'image' then 'byte[]'
            when 'int' then 'int'
            when 'money' then 'decimal'
            when 'nchar' then 'char'
            when 'ntext' then 'string'
            when 'numeric' then 'decimal'
            when 'nvarchar' then 'string'
            when 'real' then 'double'
            when 'smalldatetime' then 'DateTime'
            when 'smallint' then 'short'
            when 'smallmoney' then 'decimal'
            when 'text' then 'string'
            when 'time' then 'TimeSpan'
            when 'timestamp' then 'DateTime'
            when 'tinyint' then 'byte'
            when 'uniqueidentifier' then 'Guid'
            when 'varbinary' then 'byte[]'
            when 'varchar' then 'string'
            else 'UNKNOWN_' + typ.name
        end ColumnType,
        case
            when col.is_nullable = 1 and typ.name in ('bigint', 'bit', 'date', 'datetime', 'datetime2', 'datetimeoffset', 'decimal', 'float', 'int', 'money', 'numeric', 'real', 'smalldatetime', 'smallint', 'smallmoney', 'time', 'tinyint', 'uniqueidentifier')
            then '?'
            else ''
        end NullableSign
    from sys.columns col
        join sys.types typ on
            col.system_type_id = typ.system_type_id AND col.user_type_id = typ.user_type_id
            LEFT JOIN sys.extended_properties prop ON col.object_id = prop.major_id AND col.column_id = prop.minor_id
    where object_id = object_id(@TableName)
) t
--order by ColumnId

set @Result = @Result  + '
}'

print @Result

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
private void btnCreateEntity_Click(object sender, EventArgs e) { HeaderOfEntity HeaderOfEntity = new HeaderOfEntity(); DataTable dt = new DataTable(); #region 实例化一个实体,并为这个实体类赋值 //实体类名不能为空 if (txtClassName.Text == "") { MessageBox.Show("类名不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } else { HeaderOfEntity.ClassName = txtClassName.Text.Trim(); } //实体类的说明 if (txtClassExplain.Text != "") { HeaderOfEntity.ClassExplain = txtClassExplain.Text.Trim(); } else { HeaderOfEntity.ClassExplain = ""; } //实体类的作者 if (txtAuthor.Text != "") { HeaderOfEntity.ClassAuthor = txtAuthor.Text.Trim(); } else { HeaderOfEntity.ClassAuthor = ""; } //类的命名空间 if (txtNamespace.Text != "") { HeaderOfEntity.NameSpace = txtNamespace.Text.Trim(); } else { HeaderOfEntity.NameSpace = ""; } #endregion #region 将dataGridView中的数据复制出来,复制到DataTable中,做为参数 //添加列 for (int i = 0; i < dgvAttribute.Columns.Count; i++) { dt.Columns.Add(dgvAttribute.Columns[i].Name); } //添加行 for (int j = 0; j < dgvAttribute.Rows.Count; j++) { DataRow dr = dt.NewRow(); for (int k = 0; k < dgvAttribute.Columns.Count; k++) { dr[k] = dgvAttribute.Rows[j].Cells[k].Value; } dt.Rows.Add(dr); } #endregion string strFileName = "\\" + txtClassName.Text + ".cs"; //实例化一个接口对象 IWriteEntity writeEntity = new WriteEntity(); string strPath = "../../CreateClass"; FileStream fs; if (!File.Exists(strPath + strFileName)) { fs = new FileStream(strPath + strFileName, FileMode.Create,FileAccess.Write); } else { fs = new FileStream(strPath + strFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); } if (writeEntity.Write(fs, dt, HeaderOfEntity) == true) { MessageBox.Show("写入文件成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("写入文件失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
在线 SQL Server 实体类生成器是一种可以通过输入数据库连接信息和表名,自动生成对应的实体类代码的工具。使用这个生成器可以帮助开发人员省去手动编写大量的实体类代码的工作。 这种生成器一般具备以下功能: 1. 连接数据库:用户需要提供数据库连接信息,包括数据库服务器地址、端口号、数据库名称等。生成器通过这些信息建立与数据库的连接,以便读取表的结构信息。 2. 选择表:用户可以从已连接的数据库中选择需要生成实体类的表。生成器会读取表的字段信息,并根据字段类型、长度等信息生成对应的属性。 3. 设置实体类选项:用户可以选择生成实体类的一些选项,例如属性的可见性(public、private等)、是否生成 get/set 方法、是否生成 ToString、Equals 和 GetHashCode 等方法等。用户可以根据自己的需要进行设置。 4. 生成实体类代码:生成器根据用户的选择和表的字段信息,自动生成对应的实体类代码,并将其展示在界面上供用户查看。生成的代码一般采用常用的面向对象编程语言(如 C#、Java)的语法。 5. 下载或复制代码:用户可以选择将生成的代码下载到本地电脑上,以便在自己的项目中使用。也可以直接复制代码到剪贴板,方便粘贴到自己的开发环境中。 在线 SQL Server 实体类生成器能够大大提高开发效率,减少手动编写实体类的工作量,尤其适用于需要频繁进行数据库操作的项目。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值