为表中的每一行生成SQL表和DTO实例的C#DTO类的工具

时间:2012-04-08 09:53:09

标签: c# sql-server code-generation dto

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

给出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;  
}

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

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

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

是否有人知道可以执行此操作的工具或库?

1 个答案:

答案 0 :(得分:1)

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

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

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