1

我正在寻找一种工具或技术,它允许我指向 SQL Server 数据库中的一个表,为该表生成一个 DTO 类,然后为该表中的每一行生成 DTO 类实例。

给定 SQL Server 中的表

CREATE TABLE 
[dbo].[Tickets](
[TicketID] [int] IDENTITY(1,1) NOT NULL,
[TicketName] [varchar](50) NOT NULL,
CONSTRAINT [PK_Tickets] PRIMARY KEY CLUSTERED ([TicketID] ASC)

填充数据:

TicketID   TicketName
1          Green
2          Blue

将生成一个名为“Tickets”的类,其属性:

 public int TicketID {get;set;}
 public string TicketName {get;set;}

然后是这样的:

public List<Tickets> LoadDataIntoListOfTickets()
{
     List<Tickets> theList = new List<Tickets>;
     theList.Add(new Ticket(){TicketID = 1, TicketName = "Green"});
     theList.Add(new Ticket(){TicketID = 2, TicketName = "Blue"});
     return theList;  
}

我不想生成 INSERT 语句以发送到 SQL Server。我想为数据创建 DTO 类和实例。

澄清:我正在寻找 DTO 类的代码生成以及数据中每一行的 DTO 实例的源代码,因为它存在于特定时间点。我熟悉可以创建类的各种 ORM。我正在寻找的是会生成 LoadDataIntoListOfTickets() 列表的东西,其中包含数据库中每个 ROW 的一行源代码。(希望这可以说清楚。)

澄清 #2:当用户为应用程序创建新数据库时,这将用于替换文本文件中用于初始化表的 SQL INSERT 语句。拥有一个带有 SQL INSERT 语句的文本文件使我能够使用传统的版本控制工具来管理我们的数据库初始化过程。它工作得非常好,但它不像在 DTO 实例中存储数据那样具有人类可读性(空白/对齐)或可重用性。序列化为 XML 会降低可读性。二进制序列化(本质上)会使其不可读,并且几乎不可能与以前的版本进行有意义的比较/合并。

有谁知道可以做到这一点的工具或库?

4

1 回答 1

1

如果您真正追求的是一种使新数据库从不包含任何内容到包含数据库、模式和初始数据集的方法,那么我强烈建议您研究数据库迁移工具。它们将帮助您在多个安装/环境中保持可读性和同步性。

在这里你可以找到一些列出的: https ://stackoverflow.com/questions/8033/database-migration-library-for-net

我个人更喜欢https://github.com/dradovic/MigSharp

于 2012-04-08T11:17:43.833 回答