これはかなり長いものですが、私はあなたの考えと提案に非常に感謝しています。システム移行のための良い.NET ORMへのレガシーMySQLデータベースのマッピング
PHPとMySQLで書かれたレガシーシステムを再構築し、そのコンポーネントをC#とSQL ServerのASP.MVCに置き換えています。従来のアーキテクチャではが多く、が残っていて、スパゲッティコード、DBの参照整合性、未使用のコードとデータベースフィールド、そして一般的には悪いコーディングに深刻な問題があります。
私が好きなだけ、古いコードをすべて取り除いて置き換えることはできません。開発プロセス中に機能を維持する必要があるため、古いデータベースを使用しながら新しい機能を構築して、データが常に正確であることを保証する必要があります。データの正確さのレベルはリアルタイムではありませんが、2つのシステムがある場合は、100%の時間で同期する必要があります。古いシステムでは6つの異なるMySQLデータベースが使用されています。これらのデータベースはすべて同じサーバー上にあり、Linuxを実行しています。新しいシステム用の新しいサーバーでWindows 2008 R2を実行し、最新バージョンのSQL Serverを使用する予定です。
私が解決しなければならない問題は、これらのデータベースをすべて、C#で新しいシステムを開発するために使用できる統合モデルにマップする必要があることです。すべての機能をC#に移行したら、コードモデルと一致するDBにデータを移植する必要があります。このDBはSQL Server上で実行されます。私はまだ移行についてあまり心配していません。私の現在の問題は、これらの6つのMySQLデータベースを、新しい開発に使うことができるよく計画された単一のモデルにマップできるようにするORMツールを見つけることです。
新しいモデルでは、いくつかの段階でデータを移植するまで新しいMySQLデータベースに格納する必要があるフィールドが追加される可能性があるため、ORMは複数のテーブルやデータベースにまたがるエンティティの構築を容易にサポートする必要があります。
私がしようとしていることは可能ですか?それは努力の面で実行可能ですか?このすべてを行うことができるORMはありますか?他の方法は、積極的にシステム上で開発しながら会社の運用能力を維持するためにそこにありますか?
私はこれらのORMのオプションを見てきました:
- 亜音速(素晴らしいが、私は、我々がしようとしている何のためにあまりにも軽量だと思う)
- Entity Frameworkのは、(私があればこれを使用することができるかもしれないように見えるI
- NHibernate(過去の悪い経験のためにクライアントがこれを使いたくない)
- LLBLGen(私たちがやっていることができるようですそれを必要とするが、長期的な支援は、彼のクライアント)
私は見てみるべきことは何ですか?私が試すことができる別のアプローチはありますか?
新しいデータベースを設計したり、テスト用にデータを移行/作成したり、新しいデータベースに対して開発したりする理由はありますか?その後、切り替えの準備ができたら、すべてのコンテンツを一度に移行し、新しいアプリに切り替えます。これは、直前の時点で持続層を切り替えるためにORMに頼るよりも簡単で、よく実装されたクリーンなモデルとデータベースに対して開発することができます。 – sga101
こんにちは@ sga101、私たちは開発プロセスの間にビジネス価値を追加する必要があります。私たちが開発するにつれて、新しいユーザーインターフェイスにクライアントに新しい機能とフェーズを与えたいと思います。残念なことに、操作を停止するリスクが高すぎるため、開発を一度にやり直すことはできません。 –