【问题标题】:Generate C# class from SQL Server table without Store Procedure [duplicate]从没有存储过程的 SQL Server 表生成 C# 类 [重复]
【发布时间】:2019-02-12 23:34:33
【问题描述】:

有没有什么方法可以在 SQL Server 中为表生成类,而无需使用 ADO.net Entity Framework 在项目中添加表?

public class Approval
{
        public long Id { get; set; }
        public long? FormId { get; set; }
        public long? DesignationId { get; set; }
        public DateTime? CreatedOn { get; set; }
}

【问题讨论】:

  • 您可以使用数据库优先的方法创建图表,然后创建所有类
  • 实际上想解决什么问题?您已经创建了一个类来为您展示的表格建模。
  • 我正在使用存储过程来获取数据,在 razor 视图中我想引用一类存储过程,例如 @model Brass.Models.EmployeeClass 所以我想要一种简单的方法来生成不想使用的类像代码优先方法这样的长过程
  • @MaxVernon:Dapper 是否有从表或查询创建 POCO 类型的工具?我有一个在上一份工作中编写的工具(从数据读取器中提取元数据),但是,唉,我不再在那里工作了。

标签: c# sql asp.net sql-server oop


【解决方案1】:

这个在线工具从 SQL 表生成一个类。类基于 MS-SQLORACLEMYSQLPOSTGRESQLSQLite 数据库中的 CREATE TABLE 脚本,到 C# 和其他编程语言中的类。

https://codverter.com/src/sqltoclass

【讨论】:

  • 太好了,我们发现我使用的是 .net 桌面应用程序,但它总是冻结我喜欢这些在线工具,如果使用的话,效果很好。
  • 太棒了!我不想打出一个很长的课程。这个工具为我节省了 10 分钟!
  • 如果您不想使用在线工具,请使用以下帖子中的存储程序stackoverflow.com/questions/5873170/…
  • @WaqasNawazWarraich 谢谢你的链接。顺便说一句,从安全的角度来看,输入到编辑器的所有数据仅在客户端(使用 Angular 和 Typescript)进行解释和转换,并且永远不会发送回服务器(完全披露 - 我是这个工具的开发者)。
  • bigint 可为空的列不是用“?”生成的
【解决方案2】:

如果你想使用实体框架,你应该考虑使用Database First 方法。

在 VS 中将 Sql Server 方案导入类的其他简单快速的方法是:

  1. select 作为 json 查询:

    SELECT * FROM Approval 
    FOR JSON AUTO
    
  2. 从剪贴板中的结果复制一行:

    [
      {"Id":1, "FormId":10, "DesignationId":100, "CreatedOn":"2000-01-01T00:00:00"},
      {"Id":2, "FormId":20, "DesignationId":200, "CreatedOn":"2000-01-01T00:00:00"}
    ]
    
  3. 在 Visual Studio 中粘贴:Edit > Paste Special > Paste JSON As Classes

【讨论】:

  • JSON 仅在 MSSQL 2016+ 中受支持。但是粘贴为 XML 在 MSSQL 2008+ 中效果很好。
  • am on 2019 他们现在删除了吗?
  • @rogue39nin 在 VS2019 中仍处于 Edit 下,但如果您“右键单击”,则不会出现。
  • 这很好用,但在你有数据之前它不起作用。我只是建表,不想麻烦添加数据。
【解决方案3】:

对于表、存储过程等,当你有很多POCO要生成时:

https://www.codeproject.com/Articles/892233/POCO-Generator

或者对于简单的单个查询:

https://visualstudiomagazine.com/articles/2012/12/11/sqlqueryresults-code-generation.aspx

【讨论】:

  • 可能会出现很多问题并且经常崩溃。
猜你喜欢
  • 1970-01-01
  • 2010-12-14
  • 2012-07-25
  • 1970-01-01
  • 1970-01-01
  • 2019-03-06
  • 1970-01-01
  • 1970-01-01
  • 2019-12-03
相关资源
最近更新 更多