.NET有什么好用的 ORM框架

myNameIsLina 2016-09-25 09:00:07
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个,还有没有好的推荐
...全文
3016 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluedoctor 2020-05-08
  • 打赏
  • 举报
回复
SOD框架,不仅仅是一个ORM框架,还有SQL-MAP功能。
https://github.com/znlgis/sod
dotnetCore 2020-04-26
  • 打赏
  • 举报
回复
https://github.com/dotnetcore/FreeSql 单元测试数量4000+,github star 1500+,支持.net framework4.0+ 支持 CodeFirst 迁移,哪怕使用 Access 数据库也支持; 支持 DbFirst 从数据库导入实体类,安装实体类生成工具; 支持 深入的类型映射,比如pgsql的数组类型; 支持 丰富的表达式函数,以及灵活的自定义解析; 支持 导航属性一对多、多对多贪婪加载,以及延时加载; 支持 读写分离、分表分库、过滤器、乐观锁、悲观锁; 支持 MySql/SqlServer/PostgreSQL/Oracle/Sqlite/达梦数据库/Access;
江湖评谈 2020-04-24
  • 打赏
  • 举报
回复
EF 好,EF妙,EF呱呱叫
  • 打赏
  • 举报
回复
iAm_Ike 2019-08-08
  • 打赏
  • 举报
回复
没有人提ServiceStack吗,很全的一套,除了数据库这块还提供了redis支持。
大鱼> 2019-08-08
  • 打赏
  • 举报
回复
我觉得这些框架必然是牺牲一部分性能为前提的,无论EF还是其他。
weixin_44909093 2019-08-08
  • 打赏
  • 举报
回复
这里有很多关于.Net的技术框架,程序员网址导航:https://www.hrefs.cn/
正怒月神 2019-08-08
  • 打赏
  • 举报
回复
你们为何还在挖。。。 我TM第三次回复这个帖子了, 跨度3年
  • 打赏
  • 举报
回复
考古现场了啊,这是谁负责的考古队啊?
Eason0807 2019-08-01
  • 打赏
  • 举报
回复
EF的上限很高,下限也很低
XBodhi. 2019-08-01
  • 打赏
  • 举报
回复
官方的有
ef
linq to sql

第三方我不推荐你了。各有不足,

我自己也有写的,13 年 nuget 上有发布。只是有BUG 几年 么有修复哈。不过不影响使用。

  • 打赏
  • 举报
回复
坟贴 。谁挖的啊 2016年的
bill_shh 2019-08-01
  • 打赏
  • 举报
回复
http://www.codeisbug.com 2019年了,用最好的ORM 不写SQL https://blog.csdn.net/jiaweiok123/article/details/88681408
OrdinaryCoder 2019-04-30
  • 打赏
  • 举报
回复
引用 15 楼 胖叔叔写代码 的回复:
我也来凑一铲子,咦这个土味道不太对啊

放假之前皮一下,我也来一下
  • 打赏
  • 举报
回复
我也来凑一铲子,咦这个土味道不太对啊
it_gz_xi 2019-04-30
  • 打赏
  • 举报
回复
Dapper觉得挺好用的,EF每次更新数据表感觉比较麻烦啊,经常碰到一些返回的类型出错,跟实际的不匹配,不知道什么原因?
丰云 2019-04-28
  • 打赏
  • 举报
回复
EF,不二之选 可惜,社会上更多是不懂ef而滥用的人,反过来说ef不好的。。。。。
  • 打赏
  • 举报
回复
谁在挖坟
dotnetCore 2019-04-27
  • 打赏
  • 举报
回复
https://github.com/2881099/FreeSql 这个好
正怒月神 2017-09-05
  • 打赏
  • 举报
回复
2016-09-25的帖子。。。 我差点就正紧的回复了。。
加载更多回复(9)

7,765

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧