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

首頁 > 編程 > C# > 正文

C#實現根據實體類自動創建數據庫表

2019-10-29 21:17:06
字體:
來源:轉載
供稿:網友

.Net新手通常容易把屬性(Property)跟特性(Attribute)搞混,其實這是兩種不同的東西

屬性指的類中封裝的數據字段;而特性是對類、字段、方法和屬性等元素標注的聲明性信息

如下代碼(Id、Name為User的屬性,[DbKey]為Id的特性)

/// <summary>/// 用戶信息/// </summary>public class User{ [DbKey] public string Id { get; set; } public string Name { get; set; }}

特性分預定義特性和自定義特性,本節主要講述自定義特性

特性能解決什么問題?

假如現在需要通過定義一些實體類,動態創建出對應的數據庫表,該怎么做呢?

直接上代碼

namespace CustomerAttribute{ /// <summary> /// 數據庫主鍵 /// </summary> public class DbKey : Attribute { public string Description { get; set; } public DbKey() { } public DbKey(string description) {  this.Description = description; } }}
namespace CustomerAttribute{ /// <summary> /// 用戶信息 /// </summary> public class User { [DbKey] public string Id { get; set; } public string Name { get; set; } } /// <summary> /// 用戶角色 /// </summary> public class UserRole { [DbKey("用戶ID")] public string UserId { get; set; } [DbKey("角色ID")] public string RoleId { get; set; } }}
namespace CustomerAttribute{ class Program { /// <summary> /// 獲取數據庫主鍵字段 /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> private static IEnumerable<PropertyInfo> getDbKeyFields<T>() {  // 獲取當前類中的公共字段  var fields = typeof(T).GetProperties();  // 查找有DbKey特性的字段  var keyFields = fields.Where(field => (DbKey)Attribute.GetCustomAttribute(field, typeof(DbKey)) != null);  return keyFields; } private static string getDescription(PropertyInfo field) {  string result = string.Empty;  var dbKey = (DbKey)Attribute.GetCustomAttribute(field, typeof(DbKey));  if (dbKey != null) result = dbKey.Description;  return result; } static void Main(string[] args) {  try  {  var userKeyFields = getDbKeyFields<User>();  Console.WriteLine("User表的主鍵為:" + string.Join(",", userKeyFields.Select(field => field.Name)));  var userRoleKeyFields = getDbKeyFields<UserRole>();  Console.WriteLine("UserRole表的主鍵為:" + string.Join(",", userRoleKeyFields.Select(field => field.Name)));  foreach (PropertyInfo field in userRoleKeyFields)  {   string description = getDescription(field);   Console.WriteLine(string.Format("{0}字段的描述信息為:{1}", field.Name, description));  }  }  catch (Exception ex)  {  Console.WriteLine(ex);  }  finally  {  Console.ReadLine();  } } }}

從上邊代碼可以看出來,特性本身也是類,繼承自Attribute類,我們可以對類、方法、屬性等元素進行特性標注

上邊是一個簡單示例,我們可以通過自定義[DbKey]特性,標注在需要設置主鍵的字段上

需要動態創建數據庫的時候,可以從實體類中解析出表名、字段名、主鍵字段、字段說明等等,然后生成創建數據庫表的腳本,動態創建數據庫表

創建數據庫的代碼,后邊可以進一步補充

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持VEVB武林網!


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久乐国产精品| 欧美韩日一区二区| 亚洲国产天堂久久国产91| 国产精品久久久久国产a级| 欧美日韩精品在线播放| 国产精品免费福利| 国产做受69高潮| 久久久免费观看| 亚洲日本欧美日韩高观看| 91精品国产91久久久| 欧美激情小视频| 成人黄色短视频在线观看| 中文字幕av一区二区三区谷原希美| 中文字幕日韩综合av| 91人人爽人人爽人人精88v| 欧美疯狂性受xxxxx另类| 国内精品视频一区| 国产ts一区二区| 国产精品入口尤物| 国产97在线亚洲| 欧美专区在线视频| 日韩av不卡在线| 久久久久久久久国产| 亚洲精品一区中文| 一区二区在线视频| 亚洲精品少妇网址| 久久久久久久成人| 国产专区精品视频| 久久久中精品2020中文| 欧美一乱一性一交一视频| 欧美电影免费观看电视剧大全| 18一19gay欧美视频网站| 日本国产欧美一区二区三区| 亚洲精品二三区| 久久久精品一区二区三区| 黄色成人在线播放| 成人午夜高潮视频| 亚洲欧洲午夜一线一品| 精品国产91乱高清在线观看| 久久精品美女视频网站| 国产精品尤物福利片在线观看| 久久久久久久久久久网站| 欧美日韩一区二区免费视频| 久久91精品国产91久久久| 欧美一区二区视频97| 色小说视频一区| 国产精品扒开腿做爽爽爽的视频| 国产精品久久二区| 国产日韩精品入口| 国产一区玩具在线观看| 国产精品一区久久久| 上原亚衣av一区二区三区| 97av在线播放| 午夜精品在线观看| 亚洲女人被黑人巨大进入| 成人久久18免费网站图片| 在线观看日韩www视频免费| 欧美成人全部免费| 蜜臀久久99精品久久久无需会员| 538国产精品一区二区在线| 国产99视频精品免视看7| 欧美日韩加勒比精品一区| 亚洲综合在线小说| 欧美裸身视频免费观看| 久久久噜久噜久久综合| 日韩av色综合| 精品国产乱码久久久久久天美| 91在线精品播放| 成人a级免费视频| 精品久久久久久久久久久久久久| 91免费人成网站在线观看18| 国产成人精品一区二区三区| 久久久免费在线观看| 亚洲精品少妇网址| 久久久女女女女999久久| 亚洲精品自产拍| 欧美国产亚洲精品久久久8v| 国产成人福利网站| 中文字幕国产精品| 亚洲色图av在线| 91精品久久久久久久久久久久久久| 久久影院免费观看| 欧美多人乱p欧美4p久久| 国产亚洲在线播放| 国产日韩欧美综合| 欧美极品第一页| 国产日韩在线视频| 疯狂做受xxxx高潮欧美日本| 激情av一区二区| 亚洲男人天堂2019| 亚洲精品短视频| 欧美国产日韩一区| 日韩中文av在线| 91中文在线视频| 亚洲美女av网站| 成人欧美一区二区三区在线湿哒哒| 国产成人精品网站| 久久九九精品99国产精品| 日韩欧美中文字幕在线播放| 亚洲激情视频在线观看| 国产精品va在线播放我和闺蜜| 亚洲人成亚洲人成在线观看| 亚洲精品在线91| 久久精品国产久精国产思思| 亚洲黄色av网站| 91午夜理伦私人影院| 色爱精品视频一区| 亚洲最大激情中文字幕| 欧美中在线观看| 国产精品444| 欧美日韩国产一中文字不卡| 欧美国产日韩中文字幕在线| 欧美成人精品在线视频| 国产精品日韩久久久久| 亚洲精品wwww| 亚洲电影免费在线观看| 欧美午夜久久久| 国产精品久久久亚洲| 久久在线视频在线| 亚洲自拍偷拍网址| 欧美日韩中文字幕日韩欧美| 91久久久精品| 欧美在线视频一区| 成人性生交大片免费观看嘿嘿视频| 国产精品视频一区二区高潮| 欧美性猛交xxxx免费看漫画| 成人黄色影片在线| 亚洲精品短视频| 国产97在线|日韩| 国内精品一区二区三区| 一区国产精品视频| 亚洲第一区中文字幕| 国产精品综合网站| 欧美成人四级hd版| 亚洲人成欧美中文字幕| 亚洲精品美女久久久| 日韩av电影手机在线观看| 亚洲人a成www在线影院| 热久久99这里有精品| 一区二区三区四区精品| 青青久久av北条麻妃海外网| 欧美亚洲成人精品| 国产xxx69麻豆国语对白| 欧美影院在线播放| 国产亚洲欧洲在线| 欧美成人合集magnet| 亚洲高清在线观看| 97久久伊人激情网| 亚洲精品综合久久中文字幕| 欧美视频在线观看免费| 色偷偷av一区二区三区| 亚洲www在线观看| 国产日韩欧美在线播放| 97国产精品视频人人做人人爱| 91免费观看网站| 中文字幕av日韩| 精品视频在线播放| 欧美大全免费观看电视剧大泉洋| 4438全国成人免费| 欧美成人全部免费| 国产精品视频内| 亚洲女人天堂网| 亚洲开心激情网| 日韩在线精品视频|