亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

使用屬性和反射過渡從數據存取層到業務物件

2019-11-18 12:01:38
字體:
來源:轉載
供稿:網友

  簡介
  當然,ado.net比起ado和oledb來說要簡單多了.我所知道的是打開connection我可以通過dataset和datareader讀取數據庫.當然你也可以通過你的需要來恢復數據.
  
  我意識到dataset功能強大而且能節省我的時間,但是我還是愿意選擇自己的方式了處理數據庫程序.我喜歡用一個類來調用方法去更新數據. 因此當用數據庫中的一條記錄的時候我就會創建一個物件實例,設置它的屬性和調用的的更新方法,就是這么簡單.
  
  但是這樣以來我不得不寫老多的代碼,業務物件類,數據庫更新代碼和數據庫讀取代碼.開始的時候,我沒有使用存儲過程更新數據庫,因此我要對沒一個業務物件來寫sql語句.在我修改數據庫或業務物件的時候,這樣的工作就顯得非凡的乏味.
  
  我的方案
  我的方案是以創建簡單的類開始的,是我寫較少的代碼來更新物件. 所有我做得就是增加字段的名字,值和類,然后生成sql語句. 當我結束這一切的時候,我一周都沉醉在快樂之中…
  
  可是當我開始使用sqlServer代替access的時候,我的情緒變化了.我不能使用單純的sql語句來更新我的物件,我不得不用存儲過程.不幸又開始了…我不得不創建成打的sql語句來更新物件.枯燥的工作又開始了…
  
  我注重到我能寫簡單的類來生成參數,正如sql語句生成類一樣.盡管這個方案能使我寫少一點的代碼,但是無論何時我的方案要是有所改動的話,我仍然要去檢查我的更新代碼.
  
  接著我有了在數據庫中如何創建持續化類的想法.使用屬性來描述數據庫的表,這樣屬性就可以被映射到表中的字段了.這樣我就可以僅僅修改業務物件類了.
  
  為了你更輕易讀懂,我把這篇文章分成了三部分.第一部分展示使用屬性來描述一個業務類.第二部分展示我是如何采集信息,最后我將展示完整的方案.
  
  I - Attributes
  attributes是用來描述裝配件,類,屬性,方法和字段的.在.net 架構里已經有些地方使用了.但是你可以創建自己的屬性.
  
  我使用attributes來描述一個類是如何被存儲到數據庫中的.在一個類中,我將指出那些屬性應該被持續化,正如存儲過程是如何更新數據庫的.為了描述表里的列,我在類的屬性里面使用了attributes. 列可以是一個簡單的數據字段,唯一的鍵或外鍵.
  
  如何創建自己的attribute?
  相當輕易,你可以創建一個繼續于System.Attribute的類.至于命名習慣你可以加上個Attribut后綴.當你創建一個attribute,你要知道該attribute如何被用.是否應該被用在類?屬性,或多個定義是答應的?
  
  現在是來看些代碼的時候了.這些attributes被用來描述一個業務物件類:
  
  using System;
  
  using System.Data;
  
  namespace DAL
  
  {
  
  [AttributeUsage(AttributeTargets.PRoperty)]
  
  public class BaseFieldAttribute : Attribute
  
  {
  
  string columnName;
  
  public BaseFieldAttribute(string columnName)
  
  {
  
  this.columnName = columnName;
  
  }
  
  public string ColumnName
  
  {
  
  get { return columnName; }
  
  set { columnName = value; }
  
  }
  
  }
  
  [AttributeUsage(AttributeTargets.Property)]
  
  public class DataFieldAttribute : BaseFieldAttribute
  
  {
  
  DBType dbType = DbType.String;
  
  int  size  = 0;
  
  public DataFieldAttribute(string columnName) : base(columnName)
  
  {
  
  }
  
  public DbType Type
  
  {
  
  get { return dbType; }
  
  set { dbType = value; }
  
  }
  
  public int Size
  
  {
  
  get { return size; }
  
  set { size = value; }
  
  }
  
  };
  
  [AttributeUsage(AttributeTargets.Property)]
  
  public class KeyFieldAttribute : BaseFieldAttribute
  
  {
  
  public KeyFieldAttribute(string columnName) : base(columnName)
  
  {
  
  }
  
  };
  
  [AttributeUsage(AttributeTargets.Property)]
  
  public class ForeignKeyFieldAttribute : BaseFieldAttribute
  
  {
  
  public ForeignKeyFieldAttribute(string columnName) : base(columnName)
  
  {
  
  }
  
  };
  
  [AttributeUsage(AttributeTargets.Class AttributeTargets.StrUCt)]
  
  public class DataTableAttribute : Attribute
  
  {
  
  string tableName;
  
  string updateStoredProcedure  = "";
  
  public DataTableAttribute(string tableName)
  
  {
  
  this.tableName = tableName;
  
  }
  
  public string TableName
  
  {
  
  get { return tableName; }
  
  set { tableName = value; }
  
  }
  
  public string UpdateStoredProcedure
  
  {
  
  get { return updateStoredProcedure; }
  
  set { updateStoredProcedure = value; }
  
  }
  
  }
  
  }
  
  正如你看到的,每個類的上面有個attributeusage attribute.它是來指示attribute是如何被使用的.
  
  我是如何使用這些 attribute來描述一個類的呢?
  
  假設你有一個應用來保存用戶和聯系的信息.在OO設計中,我們以一個Person來開始,那么聯系信息就是一個person加上地址和信息.用戶就是聯系信息加上購買信息. 當然用戶和別人是有依靠關系的.假如我在別的文章使用這些當然是相當愚蠢的.^_^
  
  這個類的代碼如下:
  
  using System;
  
  using System.Data;
  
  using DAL;
  
  namespace TestApp
  
  {
  
  public class Person
  
  {
  
  string name = "";
  
  int age = 0;
  
  int id = 0;
  
  [KeyField("id")]
  
  public int Id
  
  {
  
  get { return id; }
  
  set { id = value; }
  
  }
  
  [DataField("name", Size=50)]
  
  public string Name
  
  {
  
  get { return name; }
  
  set { name = value; }
  
  }
  
  [DataField("age")]
  
  public int Age
  
  {
  
  get { return age; }
  
  set { age = value; }
  
  }
  
  public override string ToString()
  
  {
  
  return string.Format("{0}, {1} years old", Name, Age);
  
  }
  
  }
  
  [DataTable("contact", UpdateStoredProcedure="sp_UpdateContact")]
  
  public class Contact : Person
  
  {
  
  string phone = "";
  
  string email = "";
  
  string address = "";
  
  string address2 = "";
  
  string city = "";
  
  string postalCode = "";
  
  string state = "";
  
  string country = "";
  
  [DataField("phone", Size=20)]
  
  public string Phone
  
  {
  
  get { return phone; }
  
  set { phone = value; }
  
  }
  
  [DataField("email", Size=80)]
  
  public string Email
  
  {
  
  get { return email; }
  
  set { email = value; }
  
  }
  
  [DataField("address", Size=80)]
  
  public string Address
  
  {
  
  get { return address; }
  
  set { address = value; }
  
  }
  
  [DataField("address2", Size=80)]
  
  public string Address2
  
  {
  
  get { return address2; }
  
  set { address2 = value; }
  
  }
  
  [DataField("city", Size=50)]
  
  public string City
  
  {
  
  get { return city; }
  
  set { city = value; }
  
  }
  
  [DataField("postalCode", Size=20)]
  
  public string PostalCode
  
  {
  
  get { return postalCode; }
  
  set { postalCode = value; }
  
  }
  
  [DataField("state", Size=4)]
  
  public string State
  
  {
  
  get { return state; }
  
  set { state = value; }
  
  }
  
  [DataField("country", Size=50)]

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品999| 日韩美女免费观看| 亚洲免费精彩视频| 久久艳片www.17c.com| 91久久精品一区| 国产日韩亚洲欧美| 日韩中文字幕视频在线| 欧美国产日韩一区二区在线观看| 亚洲视频在线免费看| 91影院在线免费观看视频| 欧美高清不卡在线| 亚洲jizzjizz日本少妇| 国产成人亚洲综合青青| 亚洲一区亚洲二区| 成人黄色中文字幕| 97久久精品视频| 久久精品国产一区二区三区| 欧美在线一级va免费观看| 成人免费在线视频网址| 91香蕉国产在线观看| 成人a级免费视频| 国产精品久久久久久网站| 亚洲一区亚洲二区亚洲三区| 欧洲日韩成人av| 欧美国产乱视频| 亚洲精选中文字幕| 国产成人+综合亚洲+天堂| 久久亚洲私人国产精品va| 成人欧美一区二区三区黑人孕妇| 久久综合免费视频影院| 亚洲精品久久7777777| 国产成人精品免费久久久久| 欧美老少做受xxxx高潮| 在线播放国产一区中文字幕剧情欧美| 欧美亚洲一级片| 中文字幕日韩视频| 九九精品视频在线| 国产乱人伦真实精品视频| 欧美成人免费全部观看天天性色| 欧美疯狂xxxx大交乱88av| 欧美精品久久一区二区| 午夜精品久久久久久久99热浪潮| 亚洲高清一二三区| 亚洲精品色婷婷福利天堂| 日韩av在线播放资源| 国产精品激情av在线播放| 热99精品只有里视频精品| 亚洲天堂av网| 亚洲一区二区免费| 日韩一区二区精品视频| 激情懂色av一区av二区av| 精品国产乱码久久久久酒店| 欧美成人精品xxx| 91精品国产综合久久香蕉922| 亚洲天堂av综合网| 亚洲精品第一页| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲精选一区二区| 成人网页在线免费观看| 久久全球大尺度高清视频| 国模精品视频一区二区三区| 日韩成人激情视频| 色yeye香蕉凹凸一区二区av| 久久激情五月丁香伊人| 久青草国产97香蕉在线视频| 久久久99免费视频| 欧美国产日韩视频| 亚洲精品国产拍免费91在线| 久久久久国产视频| 2019中文字幕全在线观看| 国产精品精品久久久久久| 国产不卡在线观看| 欧美午夜精品久久久久久久| 国产高清视频一区三区| 欧洲一区二区视频| 亚洲国产日韩欧美在线动漫| 黑人巨大精品欧美一区免费视频| 亚洲第一国产精品| 亚洲自拍高清视频网站| 岛国av午夜精品| 2019亚洲男人天堂| 亚洲国产精品久久久久久| 中文字幕亚洲欧美一区二区三区| 亚洲毛片在线免费观看| 亚洲欧洲在线播放| 欧美激情免费在线| 国产亚洲视频在线观看| 97精品免费视频| 亚洲成人国产精品| 国产在线一区二区三区| 国产欧美一区二区| 亚洲成色777777女色窝| 欧美日韩精品在线观看| 国产午夜精品免费一区二区三区| 欧美激情国产日韩精品一区18| 欧美色另类天堂2015| 亚洲精品国产拍免费91在线| 国产精品第2页| 国产一区二区丝袜高跟鞋图片| 亚洲精品www久久久| 精品久久久久久亚洲精品| 国产精品高潮呻吟久久av野狼| 91沈先生作品| 中文字幕久久精品| 久久国产天堂福利天堂| 国产精品视频一区二区三区四| 在线观看日韩av| 一区二区亚洲欧洲国产日韩| 久久亚洲私人国产精品va| 日韩精品在线影院| 少妇高潮久久77777| 国产精选久久久久久| 日韩精品视频免费在线观看| 日韩美女福利视频| 青草青草久热精品视频在线网站| 98精品国产高清在线xxxx天堂| 国产欧美日韩免费看aⅴ视频| 国产一区av在线| 国产精品日韩在线观看| 中文字幕久热精品视频在线| 日韩美女主播视频| 伊人一区二区三区久久精品| 国产成人av网址| 日韩美女免费线视频| 中文字幕日韩精品有码视频| 91高清视频在线免费观看| 亚洲自拍另类欧美丝袜| 色悠悠久久88| 亚洲精品永久免费精品| 亚洲午夜国产成人av电影男同| 538国产精品视频一区二区| 在线看片第一页欧美| 久久激情视频久久| 久久久国产91| 亚洲精品国产综合区久久久久久久| 久久视频国产精品免费视频在线| 亚洲国产精品久久| 国产精品第8页| 日本精品性网站在线观看| 亚洲欧美另类国产| 亚洲欧美中文在线视频| 国产欧美日韩中文字幕在线| 成人午夜在线影院| www.日本久久久久com.| 国产精品人人做人人爽| 97在线免费观看视频| 国产第一区电影| 欧美中文在线观看| 国产成人精彩在线视频九色| 欧美激情奇米色| 中文字幕在线观看日韩| 精品久久久久久久久久ntr影视| 欧美在线视频一二三| 97色在线播放视频| 成人黄色免费网站在线观看| 九九综合九九综合| 日韩亚洲在线观看| 欧美午夜宅男影院在线观看| 亚洲剧情一区二区| 日韩av在线免播放器| 欧美在线一区二区三区四| 国产一区二区黄| 久久亚洲国产精品成人av秋霞| 日韩免费在线播放|