バックグラウンド
従来のインポート ツールをアップグレード中です。SQL Server に接続された 1 つのデータベースから同じサーバー上の 2 番目のデータベースにデータを移動し、途中で変換とマッピングを実行する別のスキーマを使用します。
何が起こっているのかを説明するのに役立つ例を次に示します
ソース データベースに という 1 つのテーブルがClient_Info
あり、宛先テーブルに と という名前の 2 つのテーブルがあるClients
とします。Cities
Source.dbo.Client_Info
+-----------+----------+----------+-------+
| FirstName | LastName | City | State |
+-----------+----------+----------+-------+
| John | Smith | Richmond | VA |
| Jeff | Walters | New York | NY |
+-----------+----------+----------+-------+
Dest.dbo.Clients
+-----------+-------------+--------------------------------------+
| FirstName | LastName | CityGuid |
+-----------+-------------+--------------------------------------+
| Scott | Chamberlain | 07d954bf-3214-4df4-b640-48c27db2b1ed |
+-----------+-------------+--------------------------------------+
Dest.dbo.都市
+--------------------------------------+----------+-------+
| CityGuid | CityName | State |
+--------------------------------------+----------+-------+
| 07d954bf-3214-4df4-b640-48c27db2b1ed | Richmond | VA |
+--------------------------------------+----------+-------+
マージ後、宛先は次のようになると思います
Dest.dbo.Clients
+-----------+-------------+--------------------------------------+
| FirstName | LastName | CityGuid |
+-----------+-------------+--------------------------------------+
| Scott | Chamberlain | 07d954bf-3214-4df4-b640-48c27db2b1ed |
| John | Smith | 07d954bf-3214-4df4-b640-48c27db2b1ed |
| Jeff | Walters | 98a75f88-eeaa-49ba-b464-2ac988a7b093 |
+-----------+-------------+--------------------------------------+
Dest.dbo.都市
+--------------------------------------+----------+-------+
| CityGuid | CityName | State |
+--------------------------------------+----------+-------+
| 07d954bf-3214-4df4-b640-48c27db2b1ed | Richmond | VA |
| 98a75f88-eeaa-49ba-b464-2ac988a7b093 | New York | NY |
+--------------------------------------+----------+-------+
現在、これは VB6 プロジェクトであり、一時的な #t テーブルを使用してレコードをシャッフルするハード コーディングされた SQL ステートメントを使用し、必要に応じて既存または新しい値を GUID 列に入力します。
それ以来、私たちは C# .NET ショップに移行しました。ソフトウェアの新しいバージョンがリリースされたときに宛先データベースが変更されると、インポート ツールを変更するのがますます難しくなるため、インポート ツールを C# に更新する時期であると考えられています。 (Visual Studio 6をインストールしてWindows 8で動作させるためだけに戦います)。
私の質問
NHibernate のような ORM ツールは、その仕事に適したツールですか? これまで ORM を実際に使用したことのある人は誰もいません (また、日常的に使用するために新しいデータベースと対話するソフトウェアを作成する開発チームではありません。古いデータベースを新しいデータベースに移行し、 「実際の開発者」は、各バージョンでスキーマにどのような変更を加えたかを教えてくれます)。CRUD
ORM は、このようなサーバー データベースの移行ではなく、クライアントへの操作などに使用されると思うので、ORM の使用についてはよくわかりません。
それを行うための「適切な」方法は SSIS を使用することだと思いますが、私の部署には誰も SSIS に精通しておらず、上司はそれを維持するために全員に別の言語を習得させるには時間とリソースがかかりすぎると感じています。 (この移行ツールは、他の質問で話していたステップの後に実行されるものです)。
私が探している主なものは、この移行を次の方法で行う方法です。
- 大量のデータ
- 転送中に一部の列を設定できるようにする (外部キー GUID の再利用など)
- 宛先データベース スキーマの変更に合わせて簡単に変更できます
- できれば C# または SQL で行います。
これらの種類の要件で、どのようなツールを探す必要がありますか?
ORM は正しいことではないと思うので、この質問をしますが、代わりに何を使用すればよいかわかりません。SSIS (あまりにも異なるためにテーブルから削除されました) 以外は、ハードコーディングされた SQL ステートメントを使用する以外に何をすべきかわかりませんが、それは私の心の中で「変更が容易」という要件を破っています。