今天有人問我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; }
}