1

私たちはWebアプリケーションの迅速な開発を行っており、開発データベースと本番データベースを分離する方法を探しています(現在、本番データベースで直接開発しています...これは悪いニュースです)。

LINQ2SQLおよびCRUD用の動的データでASP.NETWebフォームを使用します。データベース開発をローカルで実行してから、変更を本番環境にデプロイするにはどうすればよいですか?Entity Frameworkのコードファーストの移行を見てきましたが、LINQ2SQLに相当するものはありません。CMSはLINQ2SQLを中心に構築されているため、EFに切り替えたくありません。

また、問題が発生した場合に実際のデータでデバッグできるように、本番データをローカルで利用できるようにする必要があります(最新ではありませんが、十分に新しいものです)。

これは私がこれまでに思いついた唯一のアイデアですが、理想からはほど遠いです。

  1. 最初の開発はローカルで行われ、その後本番環境にデプロイされます
  2. その後のメンテナンスは、本番データベースのローカルレプリケーションで実行されます。次に、ある種の「データベース差分」ツールを使用して、行われた変更を判別し、それらの変更を本番環境に移行します。

これは物事を行うための許容できる方法ですか?私たちが使用できるより良い方法はありますか?

ありがとう

4

2 に答える 2

0

ええ、基本的に頭に釘を打ったと思います。これらは私がした2つのことです。

  1. ローカルで開発し、SQLスクリプトをソース管理にチェックインします。次に、展開用のスクリプトを実行します。私がうまく機能しているのは、すべてのストアドプロシージャを削除/再作成し(恐ろしいようですが、これらのスクリプトを信頼する場合は非常に役立ちます)、スキーマの変更とデータ移行のために展開ごとに1回限りのスクリプトを作成することです。

  2. 定期的に本番データをコピーしてローカルに復元します。明らかに、この同期は、ローカルと本番環境が同じになるため、展開の直後にのみ簡単に実行できます。私の現在の仕事では、実際に書き込みを二重化し、コピーを下位環境に送信しているので、それはオプションだと思います。本番環境から別の場所にデータを複製し、それを利用してデータをローカルに取り込むためのツールを作成することができます。

私が見たものから、簡単な答えはありません。

于 2013-03-26T16:23:08.360 に答える
0

SSDTデータベースプロジェクトでデータモデルと手順を開発します。これにより、いつでもデータベースを同じように見せたいものの完全なソース制御コピーが保持されます。次に、ツールに公開スクリプトを生成させます。

開発者は、常にデータベースの独自のローカルコピーで開発する必要があります。データベースプロジェクトからスクリプトをチェックアウトし、ローカルで公開する変更を加えることができます。チェックインしたプロジェクトの最新情報を入手し、変更をマージし、ローカルに再度展開してテストし、変更をチェックインできます。すべてがテストされた場合にのみ、変更を本番環境に公開します。

最終的に、データベーススキーマをコードソースファイルのように扱うことになります。

本番データを開発サーバーに取り込むには、本番DBの.bacpacまたは.dacpacを取得し、ローカルDBにインポートします。prodはdevにあるものより古いバージョンである可能性が高いため、データとともにスキーマ定義が必要になるため、これはうまく機能します

于 2013-03-26T17:03:36.430 に答える