广告
淘宝内部优惠券
当前位置: 开发异常方案库»  » .NET有什么好用的 ORM框架

.NET有什么好用的 ORM框架

开发异常方案库  收集整理于:2020-05-08 18:26:00  浏览:66次
SqlSugar.ORM 语法比较简洁性能也很强大
/2表关联查询
                var jList = db.Queryable<Student>()
                .JoinTable<School>((s1, s2) => s1.sch_id == s2.id) //默认left join
                .Where<School>((s1, s2) => s1.id == 1)
                .Select("s1.*,s2.name as schName")
                .ToDynamic();
                /*等于同于
                 SELECT s1.*,s2.name as schName 
                 FROM [Student]  s1 
                 LEFT JOIN [School]  s2 ON  s1.sch_id  = s2.id 
                 WHERE  s1.id  = 1 */
                //2表关联查询并分页
                var jList2 = db.Queryable<Student>()
                .JoinTable<School>((s1, s2) => s1.sch_id == s2.id) //默认left join
                    //如果要用inner join这么写
                    //.JoinTable<School>((s1, s2) => s1.sch_id == s2.id ,JoinType.INNER)
                .Where<School>((s1, s2) => s1.id > 1)
                .OrderBy(s1 => s1.name)
                .Skip(10)
                .Take(20)
                .Select("s1.*,s2.name as schName")
                .ToDynamic();
                //3表查询并分页
                var jList3 = db.Queryable<Student>()
               .JoinTable<School>((s1, s2) => s1.sch_id == s2.id) // left join  School s2  on s1.id=s2.id
               .JoinTable<School>((s1, s3) => s1.sch_id == s3.id) // left join  School s3  on s1.id=s3.id
               .Where<School>((s1, s2) => s1.id > 1)  // where s1.id>1
               .Where(s1 => s1.id > 0)
               .OrderBy<School>((s1, s2) => s1.id) //order by s1.id 多个order可以  .oderBy().orderby 叠加 
               .Skip(10)
               .Take(20)
               .Select("s1.*,s2.name as schName,s3.name as schName2")//select目前只支持这种写法
               .ToDynamic();
                //上面的方式都是与第一张表join,第三张表想与第二张表join写法如下
                List<V_Student> jList4 =
                 db.Queryable<Student>()
                 .JoinTable<School>((s1, s2) => s1.sch_id == s2.id) // left join  School s2  on s1.id=s2.id
                 .JoinTable<School, Area>((s1, s2, a1) => a1.id == s2.AreaId)// left join  Area a1  on a1.id=s2.AreaId  第三张表与第二张表关联
                 .JoinTable<Area, School>((s1, a1, s3) => a1.id == s3.AreaId)// left join  School s3  on a1.id=s3.AreaId  第四第表第三张表关联
                 .JoinTable<School>((s1, s4) => s1.sch_id == s4.id) // left join  School s2  on s1.id=s4.id
                 .Select<School, Area, V_Student>((s1, s2, a1) => new V_Student { id = s1.id, name = s1.name, SchoolName = s2.name, AreaName = a1.name }).ToList();
Dapper ORM 性能也不错就是功能太少
using (var conn = new SqlConnection(ConnString))
	{
		conn.Open();
		var r=conn.Execute(@"insert Person(username, password,age,registerDate,address) values (@a, @b,@c,@d,@e)",
		new [] { 
			new { a = 1, b = 1, c = 1, d = DateTime.Now, e = 1 }
			, new { a = 2, b = 2, c = 2, d = DateTime.Now, e = 2 }
			, new { a = 3, b = 3, c = 3, d = DateTime.Now, e = 3 } 
		}
                conn.Close();
         }
Petapoco 
PetaPoco可以自动转换:
var a = db.SingleOrDefault<article>("WHERE id=@0", 123);
转换为:
var a = db.SingleOrDefault<article>("SELECT col1, col2, col3 FROM articles WHERE id=@0", 123);
现在它也会处理这个问题:
var a = db.SingleOrDefault<article>("FROM whatever WHERE id=@0", 123);
只发现了这3个,还有没有好的推荐

------网友观点--------------------
向LZ推荐一个号称可以完全用面向对象的方式就能轻松执行多表连接查询、分组查询、聚合查询、插入数据、批量删除和更新等操作功能全面又灵活的ORM,http://www.cnblogs.com/so9527/p/5636216.html 包你喜欢。

------网友观点--------------------
SqlSugar.ORM  ORM 就不错,我一直在用

------网友观点--------------------
不想折腾的就用EF,喜欢研究开源框架的就关注一下SqlSugar.ORM,该框架在开源社区比较活跃,支持目前的大多数主流数据库,而且功能在不断的更新,有兴趣的可以研究一下!!!

------网友观点--------------------
EF比较省事

------网友观点--------------------
ef  ,dapper都可以

------网友观点--------------------
与ef相比,高明在哪里呢

------网友观点--------------------
我还是先学一下官方的EF框架吧。

------网友观点--------------------
真正搞懂了ef,才知道他的强大

------网友观点--------------------
不是说其他orm框架不好,但跟ef基本都没有可比性。。。。 网上传说的各种orm,都是很好的满足了广大用户的常见需求,因而名噪天下, 而ef则是深藏不露的隐士高人一样,随便露两手,都很惊人,但没有人知道他的深浅。。。。。

------网友观点--------------------
 2016-09-25的帖子。。。 我差点就正紧的回复了。。

------网友观点--------------------
https://github.com/2881099/FreeSql 这个好

------网友观点--------------------
谁在挖坟

------网友观点--------------------
EF,不二之选 可惜,社会上更多是不懂ef而滥用的人,反过来说ef不好的。。。。。

------网友观点--------------------
Dapper觉得挺好用的,EF每次更新数据表感觉比较麻烦啊,经常碰到一些返回的类型出错,跟实际的不匹配,不知道什么原因?

------网友观点--------------------
我也来凑一铲子,咦这个土味道不太对啊

------网友观点--------------------
引用 15 楼 胖叔叔写代码 的回复:
我也来凑一铲子,咦这个土味道不太对啊
放假之前皮一下,我也来一下

------网友观点--------------------
http://www.codeisbug.com 2019年了,用最好的ORM 不写SQL https://blog.csdn.net/jiaweiok123/article/details/88681408

------网友观点--------------------
坟贴 。谁挖的啊 2016年的

------网友观点--------------------
官方的有  ef  linq to sql  第三方我不推荐你了。各有不足, 我自己也有写的,13 年 nuget 上有发布。只是有BUG 几年 么有修复哈。不过不影响使用。

------网友观点--------------------
EF的上限很高,下限也很低

------网友观点--------------------
这里有很多关于.Net的技术框架,程序员网址导航:https://www.hrefs.cn/

------网友观点--------------------
我觉得这些框架必然是牺牲一部分性能为前提的,无论EF还是其他。

------网友观点--------------------
没有人提ServiceStack吗,很全的一套,除了数据库这块还提供了redis支持。

------网友观点--------------------
考古现场了啊,这是谁负责的考古队啊?

------网友观点--------------------
你们为何还在挖。。。 我TM第三次回复这个帖子了, 跨度3年

------网友观点--------------------

------网友观点--------------------
EF 好,EF妙,EF呱呱叫

------网友观点--------------------
https://github.com/dotnetcore/FreeSql 单元测试数量4000+,github star 1500+,支持.net framework4.0+ 支持 CodeFirst 迁移,哪怕使用 Access 数据库也支持; 支持 DbFirst 从数据库导入实体类,安装实体类生成工具; 支持 深入的类型映射,比如pgsql的数组类型; 支持 丰富的表达式函数,以及灵活的自定义解析; 支持 导航属性一对多、多对多贪婪加载,以及延时加载; 支持 读写分离、分表分库、过滤器、乐观锁、悲观锁; 支持 MySql/SqlServer/PostgreSQL/Oracle/Sqlite/达梦数据库/Access;

------网友观点--------------------
SOD框架,不仅仅是一个ORM框架,还有SQL-MAP功能。 https://github.com/znlgis/sod
发布此文章仅为传递网友分享,不代表本站观点,若侵权请联系我们删除,本站将不对此承担任何责任。
软件开发 程序错误 异常 ybaby.netCopyright © 2020-2026  ybaby 版权所有  桂ICP备17004385号-2 网站地图