V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
wangxiaoaer
V2EX  ›  问与答

C#中 ORM 方案

  •  
  •   wangxiaoaer · 2019-07-05 09:59:59 +08:00 · 3380 次点击
    这是一个创建于 1729 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    要求:

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

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

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

    第 1 条附言  ·  2019-07-05 11:11:41 +08:00
    谢谢各位回复,我们最终决定选择 EF6.
    21 条回复    2019-07-05 14:57:33 +08:00
    wdoit9
        1
    wdoit9  
       2019-07-05 10:05:18 +08:00
    EF?
    tanranran
        2
    tanranran  
       2019-07-05 10:07:23 +08:00
    同求

    我们公司是这样的,

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

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

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

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

    第三方可选 https://github.com/ServiceStack/ServiceStack.OrmLite,收费。
    babedoll
        8
    babedoll  
       2019-07-05 10:14:49 +08:00
    EF 官方的 好用稳定,看你数据量大不大需不需要跨库分表了,如果不需要用 EF 是很舒适的。
    catqi
        9
    catqi  
       2019-07-05 10:15:01 +08:00
    想自己写 sql 就用 dapper,轻量级
    Mithril
        10
    Mithril  
       2019-07-05 10:27:22 +08:00   ❤️ 2
    啥也不用想的自然是 EF 最方便,文档也是相当全。一般的需求只需要点几下鼠标生成对应的代码,全程不需要写 SQL,而且对 Linq 支持极好。缺点就是这框架为了让你可以不写 SQL,做的相当的复杂,你要学的东西很多很多,不然出了问题很难调试。但用 EF 的时候你需要注意就是它不是很推荐你去手动修改数据库,最好是直接写代码,直接用 EF 映射成数据库,不然会有各种问题。
    Dapper 就简单很多了,你自己手写 SQL 进代码,查出来的东西直接映射成对象。
    个人建议时如果你不是很熟悉 SQL,就用 EF。毕竟很多时候水平一般的码农写出来的那 SQL 还不如 EF 自动生成的。如果你的表关系非常复杂,会有各种关联更新查询删除啥的,也用 EF 吧,毕竟省得你去搞那个复杂的 SQL。如果你很熟悉 SQL,或者你的查询不会很复杂,那就用 Dapper。毕竟这框架需要你手写 SQL,不会自动生成,非常简单。因为简单,性能也很不错。
    这里有个官方对比
    https://entityframework.net/ef-vs-dapper
    mohoumk2
        11
    mohoumk2  
       2019-07-05 10:37:12 +08:00 via Android
    sqlsugar
    dhssingle
        12
    dhssingle  
       2019-07-05 11:01:27 +08:00
    EF Core
    rocbomb
        13
    rocbomb  
       2019-07-05 12:20:07 +08:00
    Dapper 还是挺直接的,我比较喜欢
    sun1991
        14
    sun1991  
       2019-07-05 12:29:12 +08:00
    顶 Dapper 一记, 是我用过的最顺手的框架 (可能真算不上 ORM).
    我觉得 ORM 的问题就是解决简单的问题很方便, 但是一旦碰到解决复杂问题, 可能比手写 SQL 还要难搞. 反过来讲, 解决简单的问题, 手写 SQL 也不麻烦不是?
    cozof
        15
    cozof  
       2019-07-05 12:50:36 +08:00 via iPhone
    用 EF 要哭,MySQL 表一多同步一次同步半天。
    abcbuzhiming
        16
    abcbuzhiming  
       2019-07-05 12:55:17 +08:00
    我在一堆.net 库里试验了一圈,最终确定 sqlsugar 很好用,EF 太重了
    hellojxl
        17
    hellojxl  
       2019-07-05 13:00:28 +08:00 via iPhone
    sqlsugar 好用,比 dapper 好用多了
    MonoLogueChi
        18
    MonoLogueChi  
       2019-07-05 13:00:29 +08:00 via Android
    一直用 dapper,个人感觉还不错
    BigBunny
        19
    BigBunny  
       2019-07-05 13:19:16 +08:00
    dapper 封装一下
    invinci
        20
    invinci  
       2019-07-05 14:33:39 +08:00
    sqlsugar,非常好用
    ragnaroks
        21
    ragnaroks  
       2019-07-05 14:57:33 +08:00
    chloe / sqlsugar
    不建议用 EF,数据量大会卡到你怀疑人生
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2611 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 15:34 · PVG 23:34 · LAX 08:34 · JFK 11:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.