posts - 206,  comments - 26,  views - 17万
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

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

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

posted on   努力--坚持  阅读(2338)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示