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

SQL Server に送信する INSERT ステートメントを生成したくありません。データの DTO クラスとインスタンスを作成したいと考えています。

明確化: DTO クラスのコード生成と、特定の時点で存在するデータの各行の DTO インスタンスのソース コードを探しています。クラスを作成できるさまざまな ORM に精通しています。私が探しているのは、データベース内の各 ROW のソース コード行を含む LoadDataIntoListOfTickets() リストを生成するものです。(うまくいけば、それが明確になります。)

明確化 #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 に答える