




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
轻量级ORM-PetaPOCO广州传智播客讲师:邹华栋PetaPoco简介下载T4模板配置查询、新增、修改、删除特性事务PetaPoco支持SQLServer、SQLServerCE、MySQL、PostgreSQL、Oracle支持.Net和Mono支持简单事务,one-to-many,many-to-one包含Insert/Delete/Update/Save以及IsNew等多个辅助方法对于翻页请求会自动计算总记录数,并获取特定分页支持参数替换,能够从对象属性中抓取命名参数(namedparameters)包括一个消耗资源很少的SQLBuilder类(生成Sql语句)提供T4模板便捷生成POCO类使用动态方法替代反射把列值赋给属性缺点:需要手动编写sql语句,非完全动态生成;但速度快~!体积小、速度快、单文件的轻量级ORM框架是一款轻量级对象关系映射器(ORM)与NH或EF不同的是,更注重易用性和性能1.0下载NuGet-(推荐)GitHub-官网:版本更新快1.1从nuget下载1.2从github下载下载页1.3PetaPoco文件PetaPoco核心文件T4模板PetaPoco扩展文件真实生成代码的模板定义读取数据库和生成代码的方法主文件,定义配置变量,并调用方法生成代码模板使用方式:1.将3个t4文件添加到项目中2.在配置文件中添加连接字符串并提供provider3.在database.tt中指定ConnectionStringName4.保存Database.tt文件,自动读取数据库生成C#实体类2.0配置
添加MSSQL连接字符串:<connectionStrings><addname="sqlConStr"
connectionString="DataSource=.;database=OumindBlog;user=sa;pwd=123;"
providerName="System.Data.SqlClient"/></connectionStrings>2.1通过T4模板生成实体类保存时会自动根据连接字符串,读取数据表,生成实体类2.2PetaPoco实体类publicpartialclassBlogUser:sqlConStrDB.Record<BlogUser>
{publicintId{get;set;}
publicstringLoginName{get;set;}publicstringLoginPwd{get;set;}publicstringCnName{get;set;}publicstringEmail{get;set;}publicintIsLock{get;set;}publicboolIsDel{get;set;}publicDateTimeAddTime{get;set;}publicDateTimeLastLoginTime{get;set;}publicstringLastLoginIP{get;set;}}3.0查询PetaPoco.Databasedb=newPetaPoco.Database("sqlConStr");PetaPoco数据上下文查询单个值inttotal=db.ExecuteScalar<int>("selectcount(*)fromBlogUser");查询单个实体vara=db.SingleOrDefault<BlogUser>("SELECT*FROMBlogUserWHEREid=@0",12));varlist=db.Fetch<BlogUser>("select*fromBlogUserwhereLoginName=@0","bai");varienu=db.Query<BlogUser>("select*fromBlogUserwhereLoginName=@0","bai");查询实体集合3.1查询分页Page<BlogUser>
pageData=db.Page<BlogUser>(1,5,
"SELECT*FROMBlogUserORDERBYidasc");pageData.Items.ForEach(u=>Console.WriteLine(u.Id+",title="+u.LoginName));查询分页publicclassPage<T>{publiclongCurrentPage{get;set;}//当前页码publiclongTotalPages{get;set;}//总页数publiclongTotalItems{get;set;}//总行数
publiclongItemsPerPage{get;set;}
//页容量publicList<T>Items{get;set;}//分页数据集合publicobjectContext{get;set;}//用户数据}SELECT*FROM(SELECTROW_NUMBER()OVER(ORDERBYidasc)peta_rn,*FROMBlogUser)peta_pagedWHEREpeta_rn>@0ANDpeta_rn<=@1 ->@0[Int64]="5" ->@1[Int64]="10"生成sql语句:3.2新增//创建实体对象vara=new
BlogUser();a.LoginName="XiaoBai";a.LoginPwd="123123";a.AddDate=DateTime.UtcNow;//执行新增db.Insert("BlogUser","id",a);//指定表名和主键名Console.WriteLine(a.uid);//自动获取新增的主键值3.3修改&删除//查询实体vara=db.SingleOrDefault<BlogUser>("SELECT*FROMBlogUserWHEREid=@0",1);
a.LoginPwd="123123aa";//修改值
db.Update("BlogUser","id",a);//执行修改指定表名和主键名db.Update("BlogUser","id",new{LoginPwd="new123"},1);查询后修改使用匿名类修改:把uid=1的用户密码改成new123db.Delete("BlogUser","id",usrObj);//根据实体对象的uid删除db.Delete("BlogUser","id",null,1);//根据指定uid删除删除3.4根据条件修改&删除&查询简写//根据条件删除db.Delete<BlogUser>("WHEREid=@0",12);//根据条件修改db.Update<BlogUser>("SETCnName=@0WHEREid=@1","xiaobai",1);//查询db.Query<BlogUser>("select*fromBlogUserWHEREid=@0",12);//查询:省略掉select语句db.Query<BlogUser>("WHEREid=@0",12);3.5IsNew&Save//判断对象是否存在if(db.IsNew(usrObj)){}//如果对象在数据库存在,则更新;如果不存在,则新增db.Save(usrObj);4.0PetaPoco特新PetaPoco特性ColumnAttributeTableNameAttributePrimaryKeyAttributeFor类特性For属性特性IgnoreAttributeExplicitColumnsAttributeResultColumnAttribute4.1PetaPoco特性.01-指定表名主键名[TableName("mentPhoto"),PrimaryKey("Id")]publicpartialclassBlogUser:sqlConStrDB.Record<BlogUser>{publicintId{get;set;}publicstringLoginName{get;set;}publicstringLoginPwd{get;set;}publicstringCnName{get;set;}publicstringEmail{get;set;}publicintIsLock{get;set;}publicboolIsDel{get;set;}publicDateTimeAddTime{get;set;}
}之前增删改都需要指定表名和主键名,麻烦!PetaPoco为实体类提供了特性用来指定表名和主键名指定后,增删改方法可以根据对象所属类上的特性,获取表名和主键名TableNameAttributePrimaryKeyAttribute4.1.1实体类添加特性后的新增//创建实体对象vara=new
BlogUser();a.LoginName="XiaoBai";a.LoginPwd="123123";a.AddDate=DateTime.UtcNow;//执行新增db.Insert(a);//自动根据对象所属类的特性里获取表名和主键名Console.WriteLine(a.uid);//自动获取新增的主键值4.1.2实体类添加特性后的修改&删除//查询实体vara=db.SingleOrDefault<BlogUser>("SELECT*FROMBlogUserWHEREid=@0",1);
a.LoginPwd="123123aa";//修改值
db.Update(a);//执行修改查询后修改db.Delete(usrObj);//根据实体对象的uid删除删除4.2PetaPoco特性.02[TableName("mentPhoto"),PrimaryKey("Id",autoIncrement=false)]publicpartialclassmentPhoto:sqlConStrDB.Record<mentPhoto>{publicintId{get;set;}publicstringLoginName{get;set;}publicstringLoginPwd{get;set;}publicstringCnName{get;set;}publicstringEmail{get;set;}publicintIsLock{get;set;}publicboolIsDel{get;set;}publicDateTimeAddTime{get;set;}publicDateTimeLastLoginTime{get;set;}[Ignore]//有此标签的属性,将被PetaPoto忽略,不再被读取并生成SqlpublicstringLastLoginIP{get;set;}}IgnoreAttribute特性4.3PetaPoco特性.03[TableName("mentPhoto"),PrimaryKey("Id",autoIncrement=false)][ExplicitColumns]//加此标签后,PetaPoto将只读取加了[Column]标签的属性publicpartialclassmentPhoto:sqlConStrDB.Record<mentPhoto>{[Column]publicintId{get;set;}[Column]publicstringLoginName{get;set;}[Column("LoginPwd")]//如果属性名和列名不一样,可以通过Column指定列名publicstringPwd{get;set;}publicstringCnName{get;set;}publicstringEmail{get;set;}publicintIsLock{get;set;}
}ExplicitColumnsAttribute特性4.4PetaPoco特性.04[TableName("mentPhoto"),PrimaryKey("Id",autoIncrement=false)][ExplicitColumns]publicpartialclassmentPhoto:sqlConStrDB.Record<mentPhoto>{[Column]publicintId{get;set;}[Column]publicstringLoginName
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 酶制剂制造工知识考核试卷及答案
- 2025年AI开放平台行业研究报告及未来行业发展趋势预测
- 宠物寄托服务中的用户体验优化-洞察及研究
- 2025年智慧物流背景下城市配送体系重构与末端效率研究报告
- 锅炉辅机检修工基础考核试卷及答案
- 风力发电项目委托代建与能源销售合同
- 第一节 认识物联网说课稿-2023-2024学年初中信息技术(信息科技)七年级上册甘教版
- 病案员作业指导书
- 化工离心分离工作业指导书
- 《马菊离婚协议:财产分割与子女权益保障》
- GB/T 6433-2025饲料中粗脂肪的测定
- 《慢性肾脏病(CKD)的诊断与治疗》课件
- 2025年湖北荆州石首市招考村“两委”后备干部100人历年高频重点提升(共500题)附带答案详解
- 物业收费员的培训
- 总医院医共体信息化建设项目公开文件招投标书范本
- 参考建筑工程各项应急救援演练记录
- 设计版权授权合同范例
- DB43T 2558-2023 城镇低效用地识别技术指南
- 山东省第五届财会知识大赛试题及答案
- 个人给公司的投资协议书范本
- 2024年安徽省地勘行业职业技能大赛(地质调查员)考试题库(含答案)
评论
0/150
提交评论