C#根据反射生成sql语句(Update语句)

今天有人问我Update语句怎么搞,想了一下大致思路就是用特性去标识一下,主键,然后再去用反射的方式拼sql语句。

在C#中,我们可以使用特性(Attributes)来标识一个类的属性作为该类的主键(Primary Key)。如何定义一个自定义特性标识主键,并在实体类中使用该特性

首先,定义一个自定义特性来标识主键:

 一、主键特性 

    [AttributeUsage(AttributeTargets.Class)]
    public class PrimaryKeyAttribute : Attribute
    {
        private PrimaryKeyAttribute()
        {

        }

        private string _name;

        /// <summary>
        /// 构造方法
        /// </summary>
        /// <param name="name"></param>
        public PrimaryKeyAttribute(string name)
        {
            _name = name;
        }

        /// <summary>
        /// 主键名称
        /// </summary>
        public string Name
        {
            get { return _name; }
        }
    }

把这个特性加到实体类的上方,并指定主键名称,就可以了,示例:

[PrimaryKey("code")]
///<summary>
/// 用户表
///</summary>
public class user
{

    /// <summary>
    /// 编号
    /// </summary>
    public int id { get; set; }
    
    /// <summary>
    /// 用户ID
    /// </summary>

    public int code { get; set; }
    
    /// <summary>
    /// 用户名
    /// </summary>
    public string name { get; set; }
    
    /// <summary>
    /// 密码 md5(md5()+创建时间)
    /// </summary>
    public string password { get; set; }
    
    /// <summary>
    /// 手机号
    /// </summary>
    public string mobile { get; set; }
    
    /// <summary>
    /// 1=男 2=女 3=未知
    /// </summary>
    public string sex { get; set; }
    
    /// <summary>
    /// 生日
    /// </summary>
    public DateTime? birthday { get; set; }
    
    /// <summary>
    /// 头像
    /// </summary>
    public string avatar { get; set; }
    
    /// <summary>
    /// 昵称
    /// </summary>
    public string nick { get; set; }
    
    /// <summary>
    /// 余额
    /// </summary>
    public decimal? balance { get; set; }
    
    /// <summary>
    /// 积分
    /// </summary>
    public int? point { get; set; }
    
    /// <summary>
    /// 用户等级
    /// </summary>
    public string grade { get; set; }
    
    /// <summary>
    /// 创建时间
    /// </summary>
    public DateTime create_time { get; set; }
    
    /// <summary>
    /// 更新时间
    /// </summary>
    public DateTime? update_time { get; set; }
    
    /// <summary>
    /// 1 = 正常 2 = 停用
    /// </summary>
    public string status { get; set; }
    
    /// <summary>
    /// 推荐人
    /// </summary>
    public int? pid { get; set; }
    
    /// <summary>
    /// 删除标志 有数据就是删除
    /// </summary>
    public string isdel { get; set; }
    
    /// <summary>
    /// 备注
    /// </summary>
    public string remarks { get; set; }
}

相关推荐

  1. C#根据反射生成sql语句Update语句

    2024-06-10 04:46:02       11 阅读
  2. SQL Update语句

    2024-06-10 04:46:02       40 阅读
  3. 一键生成insert,update,delete,的mybatis sql 语句

    2024-06-10 04:46:02       7 阅读
  4. sql 修改update,删除delete语句

    2024-06-10 04:46:02       33 阅读
  5. hibernate5 根据xml获取ddl sql语句

    2024-06-10 04:46:02       14 阅读
  6. Hibernate6根据xml获取ddl sql语句

    2024-06-10 04:46:02       12 阅读

最近更新

  1. demon drone 200无人机标定流程

    2024-06-10 04:46:02       0 阅读
  2. Sql 导入到 Excel 工具

    2024-06-10 04:46:02       0 阅读
  3. 关于学习方法的优化

    2024-06-10 04:46:02       1 阅读
  4. Nginx重定向

    2024-06-10 04:46:02       1 阅读
  5. Apache Flink 任意 JAR 包上传漏洞利用及防范策略

    2024-06-10 04:46:02       1 阅读

热门阅读

  1. HTTP-一

    HTTP-一

    2024-06-10 04:46:02      9 阅读
  2. 洛谷 P2926:轻拍牛头 ← 模拟题

    2024-06-10 04:46:02       10 阅读
  3. 自然语言处理(NLP)—— 自动摘要

    2024-06-10 04:46:02       11 阅读
  4. 我已经入驻@面包多平台

    2024-06-10 04:46:02       12 阅读
  5. # Mac环境如何安装Flutter:全面指南

    2024-06-10 04:46:02       13 阅读
  6. 第壹章第12节 C#和TS语言对比-多态

    2024-06-10 04:46:02       8 阅读
  7. 数据处理之图像压缩

    2024-06-10 04:46:02       9 阅读
  8. DEJA_VU3D - Cesium功能集 之 121-底图机制

    2024-06-10 04:46:02       9 阅读
  9. shaderlab 关键点记录

    2024-06-10 04:46:02       10 阅读
  10. 深入剖析时序Prophet模型

    2024-06-10 04:46:02       13 阅读