V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
hahade
V2EX  ›  数据库

如何快速将 SQL Server 2022 的几十张表转成 C# 的 Class?

  •  
  •   hahade · Apr 23, 2024 · 3179 views
    This topic created in 738 days ago, the information mentioned may be changed or developed.

    今天领导让我将 SQL Server 2022 的几十张表转成 C# 的 Class ,本想着可以到网上找个工具生成一下就行了,但是找了好久并没有发现有可以直接使用的工具。

    各位 V 友有好的工具吗?感谢!

    33 replies    2024-04-24 00:41:55 +08:00
    forgottencoast
        1
    forgottencoast  
       Apr 23, 2024
    有啊,Entity Framework (Core)的工具啊,具体用法问 chatGPT 。
    whitegerry
        2
    whitegerry  
       Apr 23, 2024
    Scaffolding?
    ktqFDx9m2Bvfq3y4
        3
    ktqFDx9m2Bvfq3y4  
       Apr 23, 2024
    我是通过建立一个 GPT 来解决的
    hahade
        4
    hahade  
    OP
       Apr 23, 2024
    @forgottencoast 问 GPT 还得人工再核对一下才行,毕竟担心生成错了。
    forgottencoast
        5
    forgottencoast  
       Apr 23, 2024
    @hahade
    这种现有数据库后有类叫 Database First ,你可以通过这个关键字找到官方文档。
    比如:
    https://learn.microsoft.com/en-us/ef/ef6/modeling/designer/workflows/database-first
    foxhunt
        6
    foxhunt  
       Apr 23, 2024
    使用 Entity Framework (EDMX) 创建数据模型
    或自己写下代码生成器
    mmdsun
        7
    mmdsun  
       Apr 23, 2024
    niubee1
        8
    niubee1  
       Apr 23, 2024
    你自己写一下,能有多大个事儿,不行你用 AI 给你写一个
    Daming
        10
    Daming  
       Apr 23, 2024
    hahade
        11
    hahade  
    OP
       Apr 23, 2024
    大家推荐的都好复杂,有没有一个图形化的界面,直接连接数据库,然后我批量选择几个表一次生成?
    ScqLl
        12
    ScqLl  
       Apr 23, 2024
    SqlSugar ,Db First 实体生成
    https://www.donet5.com/Home/Doc?typeId=1207
    idealhs
        13
    idealhs  
       Apr 23, 2024   ❤️ 1
    这种经典老番就别和别人争论了,都是成熟的不能再成熟的东西,你非要用 GUI 就去买 Rider,那个带了 EF Core 工具的 GUI 插件
    clorischan
        14
    clorischan  
       Apr 23, 2024
    baibaibaibai
        15
    baibaibaibai  
       Apr 23, 2024
    dbfirst
    lujiaxing
        16
    lujiaxing  
       Apr 23, 2024
    其实这个就挺好用的啊... 还支持多种数据库, 还能自定义生成.

    https://www.cnblogs.com/flashbar/archive/2012/01/04/MyGenerator.html
    hahade
        17
    hahade  
    OP
       Apr 23, 2024
    @lujiaxing 感谢,似乎这个最适合我,我下载试试看。
    iLoveSS
        18
    iLoveSS  
       Apr 23, 2024
    为什么平时 dotnet 板块看着冷冷清清,问个问题就都冒出来了
    hahade
        19
    hahade  
    OP
       Apr 23, 2024
    @lujiaxing 经过测试,整体上没什么问题,但它把我的 [datetime not null] 生成为 [DateTime?] 了,看来我还是要人工核对一下。
    nulIptr
        20
    nulIptr  
       Apr 23, 2024
    曲线救国一下也可以数据库导出建表 sql 脚本,拿着建表脚本生成实体结构
    ktqFDx9m2Bvfq3y4
        21
    ktqFDx9m2Bvfq3y4  
       Apr 23, 2024
    @hahade #4
    是 GPT 不是 ChatGPT 。我自己就搞了一个因为我的 ORM 是自己封装过一次用来屏蔽底层实现的,直接把创建表的 Sql 给它它就能按我的要求生成。目前相当稳定,没什么问题:有的问题就是我有时候让它省去字段名符合 C#的命名规范,有的它会继续加上:但这并不影响。
    a33291
        22
    a33291  
       Apr 23, 2024
    试试这个
    https://www.devart.com/entitydeveloper/
    记得还有叫 codesmith 的代码生成工具
    ZGame
        23
    ZGame  
       Apr 23, 2024
    自己写一个上大分!很简单的
    calmack0x452
        24
    calmack0x452  
       Apr 23, 2024
    @Chad0000 自己本地搭建的 GPT ?
    ktqFDx9m2Bvfq3y4
        25
    ktqFDx9m2Bvfq3y4  
       Apr 23, 2024 via iPhone
    @calmack0x452
    不是,plus 会员。现阶段 ai 就一个选择:openai
    lujiaxing
        26
    lujiaxing  
       Apr 23, 2024
    @hahade 可以改模板的.
    cslive
        27
    cslive  
       Apr 23, 2024
    自己写一个,读取表结构,用模板生成
    jones2000
        28
    jones2000  
       Apr 23, 2024
    找个实习生,半天就给你搞完了。
    lujiaxing
        29
    lujiaxing  
       Apr 23, 2024
    @jones2000 你扯吧 十多个表 就按平均每张表 15 个字段算, 半天你也搞不完好吧...
    Ritr
        30
    Ritr  
       Apr 23, 2024
    Entity Framework 神器
    jones2000
        31
    jones2000  
       Apr 23, 2024
    @lujiaxing 19 张表 ,每张表 15 个字段, 每个字段 20 个字母。19*15*20=5700 字母。 半天 4 小时算 4*60*60=14400 秒。

    14400/5700=2.5 秒/字母。
    lujiaxing
        32
    lujiaxing  
       Apr 23, 2024
    @jones2000 我勒个去, 你每个字段都是 Name 对吧? 20 个字母顶多写完 public string Name. 后面还有 { get; set; } 呢? 然后还要打个回车呢?
    而且你定义成员都不写注释的是吧? 来回切输入法打中文英文或者来回切换数据库工具跟 IDE 在其之间复制粘贴的时间你算没算一下? 就算不写注释, 只把 get;set; 写完, 每个字段都是四个字母, 19 张表 也有 8550 字了. 你打字速度挺快啊.
    jones2000
        33
    jones2000  
       Apr 24, 2024
    @lujiaxing get, set string 这些不都是自动补全嘛, 注释直接头上一个段 sql 的建表语句,表里的字段说明直接就在里面了。你就拷贝下字段名。 要什么切换中英文。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2619 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 98ms · UTC 12:54 · PVG 20:54 · LAX 05:54 · JFK 08:54
    ♥ Do have faith in what you're doing.