当前位置: 移动技术网 > IT编程>开发语言>.net > ORM框架EF

ORM框架EF

2018年10月14日  | 移动技术网IT编程  | 我要评论

福建南平新闻,nba常规赛直播,无主之地拾荒者

应用程序和数据库采用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了。。。

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网