范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

基于net6的简单ORM编码实现

  本文手把手实现一个简单的ORM框架,仅作为学习,免去多余的功能,力求简单。本文使用VS2022,数据库是MS SQL Server。
  一、  什么是ORM?
  ORM即对象关系映射,英文叫:Object-Relational Mapping。它的作用是在将关系型数据库中的数据表和业务实体类之间作一个映射。ORM使得我们只需操作对象的方法和属性,即可完成对数据库的增删查改,避免了与复杂繁琐的SQL语句打交道。
  ORM隐藏了访问数据库的细节,使得新手可以简单地操作数据库,但同时有些好学的技术人员希望了解ORM到底是怎么实现的。
  二、 ORM实现原理
  我们都知道,操作数据库需要编写SQL语句,SQL语句有增删查改事务存储过程等。SQL语句都有固定的要求格式,而语句中的字段则是根据数据表字段的不同而不同。
  (1)定义一个类,此类的属性与数据表的字段一一对应。
  (2)利用C#中的反射,获得类的字段名称,类名等信息。
  (3)当要向数据库新增数据时,将字段名、类名组装成SQL语句,再连接数据库进行执行,其他删除、查询、修改的操作也类似。
  三、 准备工作-创建数据表scheduleList
  本实例使用VS2022,基于NET6,microsoft SQL Server 2012。新建一数据库,名称随意,并新建一数据表,名称scheduleList。有三个字段ID、title、和createTime,分别表示是主键ID,标题和创建时间。
  四、定义scheduleList类
  定义一个类,名为scheduleList。代码如下: /** *scheduleList.cs * *Ver    变更日期             作者 *V1.0   2022-03-28 12:33:21   * *VX:lwdred QQ:463183376 */ using System; namespace Model.schedule { 	///  	///  	///  	//[Serializable] 	[EntityHelper.Model.Property("scheduleList")] 	public class scheduleList 	{ 		private long _id=0; 		///  		/// ID 		///  		[EntityHelper.Model.Property(EntityHelper.Model.ColumnKeyType.Identity)] 		public long id 		{ 			set{ _id=value;} 			get{return _id;} 		} 		private string _title=string.Empty; 		///  		/// 标题 		///  		public string title 		{ 			set{ _title=value;} 			get{return _title;} 		} 		private DateTime _createtime=DateTime.Now; 		///  		/// 创建时间 		///  		public DateTime createTime 		{ 			set{ _createtime=value;} 			get{return _createtime;} 		} 	} }
  类scheduleList,有三个字段ID、title、和createTime,分别含义是主键ID,标题和创建时间。为简单起见,本ORM并没有作别名设计,所以注意三个字段名与数据库表中的字段需一摸一样。
  其中以下语句是用来标记该字段ID作为主键。 [EntityHelper.Model.Property(EntityHelper.Model.ColumnKeyType.Identity)]
  以下语句用来标记当前类对应的数据表名是:scheduleList。 [EntityHelper.Model.Property("scheduleList")]
  五、通过反射从类信息中获得字段名称和数据表名称            //定义实体            scheduleList schedule = new scheduleList();             schedule.id= 1;             schedule.title = "标题";             schedule.createTime = DateTime.Now;
  使用C#中的反射(System.Reflection),从实体中获得字段列表,将字段一一填充至SQL语句中,SQL语句就组装好了。
  //通过反射获得实体字段             Type type = typeof(scheduleList);             PropertyInfo[] pis = type.GetProperties();             foreach (PropertyInfo pi in pis)             {                 Console.WriteLine(pi.Name);             }
  通过反射获得数据表的表名 PropertyAttribute property = (PropertyAttribute)(type.GetCustomAttributes(typeof(PropertyAttribute), false)[0]);             Console.WriteLine(property.tableName);
  新增操作的完整代码:         #region  新增         ///          /// 新增         ///          /// 实体类型         /// 实体数据         /// 主键自增时:false、显式插入主键值:ture         /// 连接字符串         ///          public bool Insert(T model, bool isIncludeKeyColumn, string connString) where T : class         {             Type type = typeof(T);             if (type == null)             {                 return false;             }             PropertyInfo[] pis = type.GetProperties();             if (pis == null || pis.Length <= 0)             {                 return false;             }             //获取表名             string tableName = GetTableName(type);             if (string.IsNullOrEmpty(tableName))             {                 return false;             }             List columns = null;             if (isIncludeKeyColumn == false)             {                 //主键自增                 columns = GetTableColumnsList(pis, ColumnKeyType.Identity | ColumnKeyType.Extend|ColumnKeyType.WidthoutAdd);             }             else             {                 //显式插入主键值                 columns = GetTableColumnsList(pis, ColumnKeyType.Extend | ColumnKeyType.WidthoutAdd);             }             if (columns == null || columns.Count <= 0)             {                 return false;             }             //生成INSERT语句             StringBuilder sqlText = new StringBuilder();             sqlText.Append("INSERT INTO ");             sqlText.Append(tableName);             sqlText.Append(" (");             for (int i = 0; i < columns.Count; i++)             {                 sqlText.Append(columns[i]);                 if (i < columns.Count - 1)                 {                     sqlText.Append(",");                 }             }             sqlText.Append(") VALUES (");             for (int i = 0; i < columns.Count; i++)             {                 sqlText.AppendFormat("@{0}", columns[i]);                 if (i < columns.Count - 1)                 {                     sqlText.Append(",");                 }             }             sqlText.Append(");");              SqlParameter[] paras = new SqlParameter[columns.Count];             for (int i = 0; i < paras.Length; i++)             {                 PropertyInfo propertyInfo = type.GetProperty(columns[i]);                 paras[i] = new SqlParameter(columns[i], GetMySqlDbType(propertyInfo.PropertyType), -1);                 paras[i].Value = propertyInfo.GetValue(model, null);             }             return SqlHelper.ExecuteNonQuery(connString, sqlText.ToString(), paras);         }         #endregion
  其它操作不再一一列出。
  我已将代码上传,下载码是: 4DACA2657F
  下载码是啥?如何下载=》三味书屋-基于net6的简单ORM编码实现

安东尼库里莫兰特领衔,本赛季发挥亮眼的10位老中青球星当勇士轻松战胜老鹰后,球队战绩来到了9胜1负,全联盟第一,这是NBA新赛季至今给球迷带来的最大惊喜,33岁的库里依旧有carry全场的能力,科尔的勇士体系也可以让一群角色球员发光发西媒阿尔维斯周日将和巴萨谈判有望回归哈维已经同意根据西媒记者BrunoAndrd的消息,阿尔维斯目前人已经抵达了巴塞罗那,他将在周日和巴萨进行一场谈判,商谈回归效力的事宜。这名记者表示阿尔维斯本人想要回到巴萨踢球,并且已经和拉波潘长江直播带货再翻车,弹幕区全是呸,最后只能匆忙下线引言随着互联网的发展,网红直播带货也越来越火,在高利润的诱惑下,很多明星也想分一杯羹,甚至连一些老艺术家也放下了身段,潘长江就是其中的一位。对于80后和90后来说,潘长江就是内地的奚梦瑶产女后,婆婆赌王四太现身医院,大赞孙女很乖很可爱11月3日,奚梦瑶何猷君先后官宣二胎女儿出生,从2019年5月被求婚,到今年11月生下二胎,实现儿女双全,幸福仿佛被按了快进键。赌王四太梁安琪为了陪产奚梦瑶,为了第一时间看到自己的朋友圈发光说说文案,愿你朝霞里如烟不幕,愿我沧海中一切如故面对,不一定最难过。孤单,不一定不快乐。获得,不一定能长久。失去,不一定不再拥有。不必因为寂寞而错爱,不必因为错爱而寂寞一辈子。懂你的人不言而喻,不懂你的人百口莫辩。没有谁的生活会11月AppStore中国免费榜(旅游出行)TOP100嘀嗒居首哈啰等居前十11月8日,我国一带一路TOP10影响力社会智库网经社电子商务研究中心联合网经社移动出行台(DCX。100EC。CN)发布2021年11月AppStore中国免费榜(旅游出行)TO自驾去过16个省市,行程35000公里,这位61岁老司机有话要说这是走吧网推送的第219个与众不同的旅者故事本期嘉宾肖刚我叫肖刚,今年61岁,我喜欢驾驶并享受驾驶带给我的快乐,多年来利用假期自驾去过国内的16个省市自治区和著名景点,也自驾过国外菱智PLUS旅行版与你一起打卡世间美景有没有一种颜色让人一见难忘有没有一种情感值得上山下海有没有一辆MPV饱含深意关于旅行,关于人生菱智PLUS旅行版诉说着四季变迁万里黄河奔流入海,结束九曲十八弯的豪放烟火氤氲,车水马耳朵上有这道纹要警惕心脏健康中医很早就认为,通过对耳朵的观察,就可以推测人体内脏的健康状况。如肾为先天之本,肾开窍于耳,因此,我们通过看耳朵的外形,就能大致知道人的先天肾气到底足不足。运用耳廓,即外耳部分来诊花生油菜籽油和玉米油,哪种油更健康?如何储存食用油?导语外国人到中国旅游,品尝到了中国的美食之后流连忘返,不愿离去,甚至会申请绿卡长时间留在中国,在中国生结婚生子,因为美食留在中国的外国人不计其数。众所周知,我国是一个美食大国,不管中医说血,健康的根本,血枯易失眠血浊易心梗血瘀易生癌素问里有记载人之所有者,血与气耳。大意是说,我们身体的最大底蕴就是血和气。而血,则主濡养。我们体内的一切脏腑和经络功能的正常发挥,都离不开血液的濡养。因此,若是血液出了问题,我们身
抓紧每分每秒救人!面对各类灾害事故国家综合性消防救援队伍闻警即动冲锋在前守护人民群众生命财产安全在地震洪涝干旱森林火灾等各类自然灾害面前,作为我国应急救援主力军国家队的国家综合性消防救援队伍坚持人民钢铁红二营,开始战斗来源东部战区文图视频陈明廖一捷蔡文杰彭嘉渊淬火练精兵,实战谋打赢近日第73集团军某旅钢铁红二营在某训练场进行实战化战术演练检验官兵在复杂地形条件下的战斗力视频加载中视频实战化战术演潮汕工夫茶为何只用三个茶杯?可以说,无茶不潮汕。略有接触过潮汕茶文化的茶友们可能会注意到一个小细节,那就是在潮汕工夫茶的品饮过程中,不管品饮人数多少,只用三个杯子是铁律。你知道这是为什么吗?01三口为品潮州的更新Adobe2022全新稳定版全家桶来了,携最新PS23。5。1版就在前不久,PS23。5。1版本来袭,迎来了ACR14。5,,搭配神经滤镜,一键升级安装。总结起来一句话,要用就用最新的!无偿领取提示评论区任意回复私信我关键词ps根据以上提示即可两千块的迷你电脑取代传统主机?体验一个月,我总结了3个问题上个月我体验了一款零刻EQ59的迷你电脑,评测文章发出来之后本以为没多少人会看,但是没想到,这类迷你电脑的热度还是非常高的,大家在评论区讨论得热火朝天。查看小伙伴们的留言和私信后我精致好物达尔优小方糖无线三模机械键盘开箱随着玩家对外设个性化需求的提升,越来越多厂商纷纷推出了风格迥异造型配列别致的键盘产品,竞品迭出也是让用户有了更多的选择。最近国产顶级外设品牌达尔优推出了全新的小方糖键盘系列,采用了女排世锦赛日本女排3比0完胜捷克保持全胜京报体育记者孔宁北京时间9月26日晚,2022年女排世锦赛小组赛在荷兰阿纳姆继续举行,在D组次轮比赛中,与中国队同组的日本女排3比0轻取捷克队,保持全胜。日本队与捷克队的动态需要引大结局!国羽0冠收官,一共收获275美元奖金不够报名费,日本3冠北京时间9月27日,国际羽联波兰公开赛刚刚顺利落幕。本站公开赛,属于羽联最低级别的挑战赛,但是国羽教练组并没有放弃,安排一大批新生代小将报名参赛,积累经验,提升积分。日本方面,同样一哥升级做大哥!张本智和再回老家,肩上扛了整个日本男团一年多前,东京奥运会男团铜牌争夺战,水谷隼一锤定音,日本男团铜牌落袋。场边的张本智和飞驰过挡板,拦腰抱住高举双手迎接全场欢呼的水谷隼。赛后新闻发布会,水鸟老师再申退意,小摩托动情挽转转手机资讯中兴猛攻屏下Axon30S上市1698元起9月26日,中兴新机Axon30S正式开卖,起售价1698元。虽然近两年一线厂商中很难看到中兴的身影,但中兴手机一直没有断更过,且不断在创新领域发力。如今新一代屏下摄像头手机Axo云手机哪个好用,云手机排行榜2022所谓云手机,可以从字面上直接理解为一台运行在云端服务器上的虚拟手机把手机上的应用都转移到云端,包括手机终端的计算存储等能力,全部都转移到云端,改由云端的服务器来提供。这样手机上的应波兰等五国呼吁欧盟对俄实施更多制裁据波兰通讯社23日援引消息人士的话报道,波兰爱尔兰拉脱维亚爱沙尼亚和立陶宛五国已向欧盟委员会提交了针对俄罗斯的新制裁计划,包括禁止与俄罗斯在核能方面的合作等。不过,关于对俄罗斯实施守望先锋初代即将停服,新作归来定于10月5日正式上线在今天,暴雪副总裁JonSpector在推特上回复玩家的中表示,守望先锋第一部具体关服信息将于明日公布,而目前游戏中已将主界面换成了最初英雄的合影,似乎在以这种方式与玩家道别。之前马自达转子发动机车型回归,增程版SUV或将于明年3月正式亮相近日,有消息透露,未来的增程版马自达MX30将使用由转子发动机负责供能的增程混动系统,相关示意图也随之曝光。新车或将于明年3月亮相。根据界面新闻目前已知的消息,马自达MX30增程版人民币成为全球第4位支付货币!超越日元成为全球第四大支付货币中国人民银行日前发布的2022年人民币国际化报告显示,人民币国际支付份额于2021年12月提高至2。7,超过日元成为全球第四位支付货币,2022年1月进一步提升至3。2,创历史新高油价连续下跌,跌幅再增20元吨油价继续下跌,国际油价昨日下跌2。58,美油回到74美元每桶。而国内成品油第19轮调价(10月10日24时)当前预测或大几率下调!第4个工作日参考原油变化率为3。92,预计汽柴油下财源建设丨桂阳县大数据平台赋能财源建设编者按按照省委省政府决策部署,2021年我省启动财源建设工程,努力推动财税增收与经济发展相协调。一年多来,全省上下各级各部门抓财源建设的意识不断增强,在税源企业培育产业培植园区提质紧急扩散!绵竹已有人中招!(转发提醒)股票行情不好,投资虚拟货币能获得几倍甚至几十倍的回报!面对网上高利润投资诱惑,市民王先生本以为能赚得盆满钵满,却没想到掉入了对方精心设置的陷阱,白白损失了钱财。前不久,王先生在朋友人民币贬值接近7。2,普通人如何实现保值自从八月份人民币开启下降通道以来,人民币贬值趋势越来越明朗。当然小编相信接下来9月10月11月12月连续4个月的CPI数据大概率是一次比一次好的。未来聚焦的点也在于美国通胀回落得快信用卡为什么越还越多?信用卡到了还款日,你肯定会从a卡倒到b卡,b卡又倒到c卡,c卡再回到d卡,d卡再到a卡,这样周转下来,会增加不少手续费。之前你肯定会经常收到某些客服说您是我行的优质客户,邀请您办理千亿大白马紫金矿业AH股遭重挫,股价跌回2年前,疑受国际金价下跌拖累?本文来源时代周报作者金子莘近日来,矿业巨头紫金矿业股价跌回2020年底的水平。9月26日,紫金矿业(601899。SH)股价大跌,盘中一度触及跌停。截止收盘下跌8。32,报收7。8牛!国庆贺礼,人民币成为全球第四位支付货币根据中国人民银行最近发布的2022年人民币国际化报告,超过日元的人民币国际支付份额已成为世界第四支付货币。自2021年以来,人民币跨境收付金额在去年高基数的基础上继续增长。2021