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

作者 : admin 本文共1238个字,预计阅读时间需要4分钟 发布时间: 2024-06-17 共1人阅读

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

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

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

 一、主键特性 

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

        }

        private string _name;

        /// 
        /// 构造方法
        /// 
        /// 
        public PrimaryKeyAttribute(string name)
        {
            _name = name;
        }

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

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

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

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

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

本站无任何商业行为
个人在线分享 » C#根据反射生成sql语句(Update语句)
E-->