C#中 ORM 方案

2019-07-05 09:59:59 +08:00
 wangxiaoaer

有个 Web 接口需要基于 C#开发,Mysql 数据库,N 多张表,每张表 50+字段。

如果全部用手写的方式拼 sql,可能要死,所以考虑到 ORM。

搜了一下好像有 Dapper,但是同样也看到一些人建议什么 LINQ,因为对.Net 开发不熟,所以想问问都有哪些方案?

要求:

1 轻量化:不要依赖很重,装很多东西那种,dotNet 平台内置的最好,性能即使稍微低一点关系不大,只要稳定。

2 文档:不要求很高质量,起码能让人看懂。

3 生命力:尽量不要推荐几年前的方案(库),除非经过了多年考验。

3419 次点击
所在节点    问与答
21 条回复
wdoit9
2019-07-05 10:05:18 +08:00
EF?
tanranran
2019-07-05 10:07:23 +08:00
同求

我们公司是这样的,

model 通过工具(每次新增和更改 model 都得跑一下)生成 partial 扩展类(里面是各种自动生成的增删改查 sql )

每次增删改查的时候,都会自动从扩展类里面读取 sql 然后执行。
fengyunSmlie
2019-07-05 10:07:54 +08:00
EF
Dapper
FreeSQL
DOS.ORM
还有更多。。
轮子其实不少
MaxTan
2019-07-05 10:09:19 +08:00
EF Dapper NHibernate
LongMaoz
2019-07-05 10:12:47 +08:00
.NET 平台上的轮子还是挺多的,官方自带的 EF 用 linq 语法就挺好用
wangxiaoaer
2019-07-05 10:13:42 +08:00
https://docs.microsoft.com/en-us/ef/ef6/

EF 是这个吧,看了下,觉得还不错,准备试一下。 另外,初步看了下好像 EF core 是新的替代品吧,有些功能还在开发中,我就选了 EF6,有没有问题?
hihipp
2019-07-05 10:14:43 +08:00
Dapper 原则上不算一个 ORM。

内置就是 EF 了,如果是 .net core 环境,目前还是不太建议用 EF Core。

第三方可选 https://github.com/ServiceStack/ServiceStack.OrmLite,收费。
babedoll
2019-07-05 10:14:49 +08:00
EF 官方的 好用稳定,看你数据量大不大需不需要跨库分表了,如果不需要用 EF 是很舒适的。
catqi
2019-07-05 10:15:01 +08:00
想自己写 sql 就用 dapper,轻量级
Mithril
2019-07-05 10:27:22 +08:00
啥也不用想的自然是 EF 最方便,文档也是相当全。一般的需求只需要点几下鼠标生成对应的代码,全程不需要写 SQL,而且对 Linq 支持极好。缺点就是这框架为了让你可以不写 SQL,做的相当的复杂,你要学的东西很多很多,不然出了问题很难调试。但用 EF 的时候你需要注意就是它不是很推荐你去手动修改数据库,最好是直接写代码,直接用 EF 映射成数据库,不然会有各种问题。
Dapper 就简单很多了,你自己手写 SQL 进代码,查出来的东西直接映射成对象。
个人建议时如果你不是很熟悉 SQL,就用 EF。毕竟很多时候水平一般的码农写出来的那 SQL 还不如 EF 自动生成的。如果你的表关系非常复杂,会有各种关联更新查询删除啥的,也用 EF 吧,毕竟省得你去搞那个复杂的 SQL。如果你很熟悉 SQL,或者你的查询不会很复杂,那就用 Dapper。毕竟这框架需要你手写 SQL,不会自动生成,非常简单。因为简单,性能也很不错。
这里有个官方对比
https://entityframework.net/ef-vs-dapper
mohoumk2
2019-07-05 10:37:12 +08:00
sqlsugar
dhssingle
2019-07-05 11:01:27 +08:00
EF Core
rocbomb
2019-07-05 12:20:07 +08:00
Dapper 还是挺直接的,我比较喜欢
sun1991
2019-07-05 12:29:12 +08:00
顶 Dapper 一记, 是我用过的最顺手的框架 (可能真算不上 ORM).
我觉得 ORM 的问题就是解决简单的问题很方便, 但是一旦碰到解决复杂问题, 可能比手写 SQL 还要难搞. 反过来讲, 解决简单的问题, 手写 SQL 也不麻烦不是?
cozof
2019-07-05 12:50:36 +08:00
用 EF 要哭,MySQL 表一多同步一次同步半天。
abcbuzhiming
2019-07-05 12:55:17 +08:00
我在一堆.net 库里试验了一圈,最终确定 sqlsugar 很好用,EF 太重了
hellojxl
2019-07-05 13:00:28 +08:00
sqlsugar 好用,比 dapper 好用多了
MonoLogueChi
2019-07-05 13:00:29 +08:00
一直用 dapper,个人感觉还不错
BigBunny
2019-07-05 13:19:16 +08:00
dapper 封装一下
invinci
2019-07-05 14:33:39 +08:00
sqlsugar,非常好用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/580205

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX