欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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 和数据库的图,还有代码层面的

ORM框架EF

 举一个栗子啊  控制台程序+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,贴下图

ORM框架EF

ORM框架EF

ORM框架EF

ORM框架EF

以后还能不能愉快的写sql了。。。

删除比修改费时,还是用软删除好了

ORM框架EF

ORM框架EF