【发布时间】:2012-04-21 03:51:01
【问题描述】:
我正在寻找一种工具或技术,可以让我指向 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 会降低可读性。二进制序列化(本质上)会使其不可读,并且几乎不可能与以前的版本进行有意义的比较/合并。
有没有人知道可以做到这一点的工具或库?
【问题讨论】:
-
你看过ORM工具吗?实体框架? LINQ 到 SQL?休眠?
-
另外:小提示 - 通常你不会故意阅读 all 行 - 只是在适当过滤的子集中你需要的那些
-
也许我的问题需要更清楚。我去编辑一下。
-
您的意思是您希望该工具提前查询数据,并生成代码来表示当时所见的数据,以便可以单独使用?如果是这样,那是可能的——通常是通过序列化。
-
不,我不是在寻找传统的序列化。
标签: c# sql-server code-generation dto