ORM框架EF
程序员文章站
2022-07-09 12:57:17
应用程序和数据库采用Tcp协议通讯 ORM框架有: NHibernate ,Dapper ,Mybatis 底层是 ADO.Net 好处: 1.面向对象 2.没有sql减少学习成本,快速开发 3.编译检测会更有用(写sql,字段改了,漏改sql就会异常) 3.有编译检测(改了数据库字段,必须修改,否 ......
应用程序和数据库采用tcp协议通讯
orm框架有: nhibernate ,dapper ,mybatis 底层是 ado.net
好处:
1.面向对象
2.没有sql减少学习成本,快速开发
3.编译检测会更有用(写sql,字段改了,漏改sql就会异常)
3.有编译检测(改了数据库字段,必须修改,否则报错)?
4.支持延迟特性,缓存
缺陷:
1.sql是自动生成,比较僵化,不确定是否使用索引
2.需要很多反射,对时间和空间有损耗(类,属性,特性)
3.比较复杂的查询不合适,用sql 或 存储过程, 注意ef查询的性能优化,和sql性能优化,
大家不要排斥orm,因为orm只是一个工具,虽然不能帮你把所有的事儿都做的尽善尽美,但是它有自己的价值,而且它也可以直接用ado.net的
一张应用程序,orm,ado.net 和数据库的图,还有代码层面的
举一个栗子啊 控制台程序+ef6.几
namespace ruanmou.efdbfirst { class program { static void main(string[] args) { try { console.writeline("欢迎来到.net高级班vip课程,今晚学习entityframework"); //context:数据库映射,一定有个数据库连接,一开始实例化是没有任何数据 //查询个数据之后会做个trace(克隆), 然后你修改任何数据,能识别到并且翻译成sql执行;;数据不是查询的,那么需要去指定状态 using (advanced11entitiesdbcontext context = new advanced11entitiesdbcontext()) { context.database.log += c => console.writeline($"sql:{c}"); user user1 = context.users.find(5);//即时查询 查询主键id=5的用户,艾玛,太神奇了 还有这种操作 。。。 var userlist = context.users.where(u => u.id > 0 && u.name.length > 2);//延时 foreach (var item in userlist) { console.writeline(item.name); } user1.name += "test"; user1.state += 1; context.savechanges();//把context全部的变化更新到数据库 user user = context.users.firstordefault(u => u.id == 5);//针对数据库查询 new list<int>().firstordefault(i => i > 10);//针对内存数据的linq to object user usernew = new user() { account = "admin", state = 0, companyid = 4, companyname = "万达集团", createtime = datetime.now, creatorid = 1, email = "57265177@qq.com", lastlogintime = null, lastmodifierid = 0, lastmodifytime = datetime.now, mobile = "18664876671", name = "yoyo", password = "12356789", usertype = 1 }; context.users.add(usernew); context.savechanges();//自增主键在插入成功后,会自动赋值过去 context.users.remove(usernew); context.savechanges();//本身就是一个事务 } } catch (exception ex) { console.writeline(ex.message); } console.read(); } } }
监视执行sql,贴下图
以后还能不能愉快的写sql了。。。
删除比修改费时,还是用软删除好了
推荐阅读
-
python django框架中使用FastDFS分布式文件系统的安装方法
-
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
-
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
-
Python的Django框架中消息通知的计数器实现教程
-
Spring Boot JPA如何把ORM统一起来
-
什么是spring框架的aop(详解Spring框架aop)
-
Python的Flask框架中的Jinja2模板引擎学习教程
-
为Python的Tornado框架配置使用Jinja2模板引擎的方法
-
Python的Tornado框架实现图片上传及图片大小修改功能
-
Python的Tornado框架实现异步非阻塞访问数据库的示例