0

コードを最初に生成したデータベースを移行する必要があるアプリケーションをサポートしています。変更は、3つのプロパティ(すべて同じテーブル/エンティティ上)を文字列からnull許容の小数に変更することです。

これを行うための要件の一部は、SQLファイルに変更を出力する必要があることです。これは、製品を本番環境でホストしているクライアントにパッチをデプロイするためです。

これは可能だと言われましたが、どうしたらいいのかわかりません。

質問:最初にEFコードを使用して、データベーステーブルを文字列ではなくnull許容の小数に移行し、変更をSQLファイルに出力するにはどうすればよいですか。現在列にあるすべての値が小数に変換可能であると仮定していますが、そうでない場合、複雑さはどのように変化しますか?

4

1 に答える 1

0

要件が正しければ、移行を作成してから実行する必要があります

Update-Database -Script

これにより、構造を更新するためにDBに対して実行されるSQLスクリプトが作成されます。

またUpdate-Database -Verbose、DB構造を更新し、SQL実行を出力します。

データを保持する必要がある場合は、移行スクリプトでSQLを直接実行することもできます。

public partial class RenameColumn : DbMigration
{
    public override void Up()
    {
       Sql("update blah...");
    }

    public override void Down()
    {
      Sql("drop table bobby");
    }

そして、データを保持するために必要なことは何でもできます。一時列/テーブルを追加し、そこに元のデータをコピーし、列タイプを変更し、データを必要な形式に変換して、新しい列にコピーし、クリーンアップします。

移行にSQLコマンドがある場合、を実行するUpdate-Database -Scriptと、結合されたスクリプト(スキャフォールド移行スクリプトと手動で記述されたスクリプト)が提供されます。

于 2012-09-19T15:16:06.567 に答える