C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■96309 / )  Re[2]: 本番環境にコードファーストで作成したDBの変更
□投稿者/ Saipon (2回)-(2020/11/10(Tue) 17:18:41)
No96308 (WebSurfer さん) に返信

> そうだとすると IIS のワーカープロセスのアカウントに SQL Server のテーブルの Create と
> か Drop などを行う権限を与えたということだと思いますが、それは権限の与えすぎでは?

確かにSQLServerに対する適切な権限の付与が出来ていませんでした。
こちらは別途検討します。


> 本番環境での DB の変更・修正はないというのが前提だと自分は思うのですが?

これも仰る通りですが、お恥ずかしながら今までにDBの変更・修正が無いシステムを経験したことがなく、
今回は特に、使いながらより良いアプリにして行こう、ということのようで
ほぼ確実に変更がありそうです。


> そもそも EF Code First は、開発時に、本番環境で変更は必要ない状態まで作り上げるために、
> 何度もの DB の変更・修正が DB に手を加えなくてもコードの変更・修正で可能にするための
> 開発用の機能という位置づけのはずなのですが・・・

開発用という位置づけなのですね。開発時の設定記事などは見つかるのですが、
本番での設定例が記載されている記事や書籍が見つけられず、漠然とDB再作成を止めて、DBを手動変更するものと考えてました。


> データベースを自動的に削除して再作成するように設定してませんか? それを避けるために

もしかすると「Database.SetInitializer」のクラスでしょうか?
確かにSystem.Data.Entity.DropCreateDatabaseIfModelChangesを継承してSeedメソッドでテストデータを入れていました。
が、CreateDatabaseIfNotExistsに変更しても再作成が無くなるだけで、モデルが変更されました、とエラーになり、
結局、DBの再作成を自動でやるか手動でやるかの違いと認識してしまってました。


> Migration 機能というのがありますが。使ってますか?

Migration機能についてはアプリを作り始める際に試しており、エラーで動かなかったのですが、
チュートリアルを見直して再度試してみます。

ちなみにMigration機能の概要として、チュートリアルには、
「このメソッドは、実稼働環境にアプリケーションを展開するまで、データベースとデータ モデルの同期の維持がうまく機能します。 アプリケーションが運用環境で実行されている場合、通常は保持するデータを格納し、新しい列の追加などの変更を行うたびにすべてのデータを失わないようにします。」
とありますが、本番環境でも使えるものと考えて良いのでしょうか。
もしくはその辺りの段取りが分かる記事や書籍などご存知だったりしますでしょうか。

返信 編集キー/


管理者用

- Child Tree -