V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hahade
V2EX  ›  数据库

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

  •  
  •   hahade · 249 天前 · 2303 次点击
    这是一个创建于 249 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    14400/5700=2.5 秒/字母。
    lujiaxing
        32
    lujiaxing  
       249 天前
    @jones2000 我勒个去, 你每个字段都是 Name 对吧? 20 个字母顶多写完 public string Name. 后面还有 { get; set; } 呢? 然后还要打个回车呢?
    而且你定义成员都不写注释的是吧? 来回切输入法打中文英文或者来回切换数据库工具跟 IDE 在其之间复制粘贴的时间你算没算一下? 就算不写注释, 只把 get;set; 写完, 每个字段都是四个字母, 19 张表 也有 8550 字了. 你打字速度挺快啊.
    jones2000
        33
    jones2000  
       249 天前
    @lujiaxing get, set string 这些不都是自动补全嘛, 注释直接头上一个段 sql 的建表语句,表里的字段说明直接就在里面了。你就拷贝下字段名。 要什么切换中英文。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   940 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 22:30 · PVG 06:30 · LAX 14:30 · JFK 17:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.