C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
掲示板トップ
C# と VB.NET 入門
新規作成
利用方法
ツリー表示
トピック表示
ランキング
記事検索
過去ログ
ログ内検索
キーワードを複数指定する場合は 半角スペース で区切ってください。
検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
[返信]をクリックすると返信ページへ移動します。
キーワード
/
検索条件
/
(AND)
(OR)
検索範囲
/
(現在のログ)
(全過去ログ)
(過去ログ1)
(過去ログ2)
(過去ログ3)
(過去ログ4)
(過去ログ5)
(過去ログ6)
(過去ログ7)
(過去ログ8)
(過去ログ9)
(過去ログ10)
(過去ログ11)
(過去ログ12)
(過去ログ13)
(過去ログ14)
(過去ログ15)
(過去ログ16)
(過去ログ17)
(過去ログ18)
(過去ログ19)
(過去ログ20)
(過去ログ21)
(過去ログ22)
(過去ログ23)
(過去ログ24)
(過去ログ25)
(過去ログ26)
(過去ログ27)
(過去ログ28)
(過去ログ29)
(過去ログ30)
(過去ログ31)
(過去ログ32)
(過去ログ33)
(過去ログ34)
(過去ログ35)
(過去ログ36)
(過去ログ37)
(過去ログ38)
(過去ログ39)
(過去ログ40)
(過去ログ41)
(過去ログ42)
(過去ログ43)
(過去ログ44)
(過去ログ45)
(過去ログ46)
(過去ログ47)
(過去ログ48)
(過去ログ49)
(過去ログ50)
(過去ログ51)
(過去ログ52)
(過去ログ53)
(過去ログ54)
(過去ログ55)
(過去ログ56)
(過去ログ57)
(過去ログ58)
(過去ログ59)
(過去ログ60)
(過去ログ61)
(過去ログ62)
(過去ログ63)
(過去ログ64)
(過去ログ65)
(過去ログ66)
(過去ログ67)
(過去ログ68)
(過去ログ69)
(過去ログ70)
(過去ログ71)
(過去ログ72)
(過去ログ73)
(過去ログ74)
(過去ログ75)
(過去ログ76)
(過去ログ77)
(過去ログ78)
(過去ログ79)
(過去ログ80)
(過去ログ81)
(過去ログ82)
(過去ログ83)
(過去ログ84)
(過去ログ85)
(過去ログ86)
(過去ログ87)
(過去ログ88)
(過去ログ89)
(過去ログ90)
(過去ログ91)
(過去ログ92)
(過去ログ93)
(過去ログ94)
(過去ログ95)
(過去ログ96)
(過去ログ97)
(過去ログ98)
(過去ログ99)
(過去ログ100)
(過去ログ101)
(過去ログ102)
(過去ログ103)
(過去ログ104)
(過去ログ105)
(過去ログ106)
(過去ログ107)
(過去ログ108)
(過去ログ109)
(過去ログ110)
(過去ログ111)
(過去ログ112)
(過去ログ113)
(過去ログ114)
(過去ログ115)
(過去ログ116)
(過去ログ117)
(過去ログ118)
(過去ログ119)
(過去ログ120)
(過去ログ121)
(過去ログ122)
(過去ログ123)
(過去ログ124)
(過去ログ125)
(過去ログ126)
(過去ログ127)
(過去ログ128)
(過去ログ129)
(過去ログ130)
(過去ログ131)
(過去ログ132)
(過去ログ133)
(過去ログ134)
(過去ログ135)
(過去ログ136)
(過去ログ137)
(過去ログ138)
(過去ログ139)
(過去ログ140)
(過去ログ141)
(過去ログ142)
(過去ログ143)
(過去ログ144)
(過去ログ145)
(過去ログ146)
(過去ログ147)
(過去ログ148)
(過去ログ149)
(過去ログ150)
(過去ログ151)
(過去ログ152)
(過去ログ153)
(過去ログ154)
(過去ログ155)
(過去ログ156)
(過去ログ157)
(過去ログ158)
(過去ログ159)
(過去ログ160)
(過去ログ161)
(過去ログ162)
(過去ログ163)
(過去ログ164)
(過去ログ165)
(過去ログ166)
(過去ログ167)
(過去ログ168)
(過去ログ169)
(過去ログ170)
(過去ログ171)
(過去ログ172)
(過去ログ173)
(過去ログ174)
(過去ログ175)
(過去ログ176)
(過去ログ177)
(過去ログ178)
(過去ログ179)
強調表示
/
ON
(自動リンクOFF)
結果表示件数
/
20件
30件
40件
50件
100件
記事No検索
/
ON
大文字と小文字を区別する
No.96305 の関連記事表示
ヒット / 12件
(1-12 を表示)
<<
0
>>
■96305
本番環境にコードファーストで作成したDBの変更
□投稿者/ Saipon -
(2020/11/10(Tue) 13:23:22)
分類:[.NET 全般]
2020/11/10(Tue) 13:25:41 編集(投稿者)
お世話になります。
.NET Framework4.8のASP.NET MVC5(C#) EntityFramework6でWEBアプリを作成しています。
DBはSQLServer2017です。
WindowsServer2019上のIISにWEBサイトを設置しアクセスしたところ、コードファーストの為、SQLServerにもDBが作成されました。
ここまでは良いのですが、
例えばこの環境で実際に本番運用をした場合、DBへのフィールド追加や桁数変更等の修正はDBに手動で直接行うものなのでしょうか?
当然ソースのモデル(POCO?)を修正することになると思いますが、モデルを修正しWEB発行しサーバーにファイルしてサイトにアクセスすると、
DBが再作成されデータが消えてしまうようなのです。
それに対してデータの再投入をするのがベストプラクティスなのでしょうか?
例えばモデルが変わってもDBを再作成せずに、手動でDB変更して運用するのが普通な気がしています。
新規のWEBアプリなのでコードファーストで試していますが、現状、モデルの変更の都度データを再投入しており、
いまいちメリットを理解できておりません。(MsAccessなどでリンクするのも主キー名の変更が必要等、不便を感じております。)
コードファーストでの開発時、運用時のメリットや使い方など、まとまった記事やサイト等ありましたら、教えて頂けると助かります。
漠然とした質問ですみません。
宜しくお願い致します。
親記事 /過去ログ167より /
関連記事表示
削除チェック/
■96308
Re[1]: 本番環境にコードファーストで作成したDBの変更
□投稿者/ WebSurfer -
(2020/11/10(Tue) 15:55:46)
■
No96305
(Saipon さん) に返信
> WindowsServer2019上のIISにWEBサイトを設置しアクセスしたところ、コードファーストの為、
> SQLServerにもDBが作成されました。ここまでは良いのですが、
ホントにそれで良いのでしょうか?
そうだとすると IIS のワーカープロセスのアカウントに SQL Server のテーブルの Create と
か Drop などを行う権限を与えたということだと思いますが、それは権限の与えすぎでは?
> 例えばこの環境で実際に本番運用をした場合、DBへのフィールド追加や桁数変更等の修正は
> DBに手動で直接行うものなのでしょうか?
本番環境での DB の変更・修正はないというのが前提だと自分は思うのですが?
そもそも EF Code First は、開発時に、本番環境で変更は必要ない状態まで作り上げるために、
何度もの DB の変更・修正が DB に手を加えなくてもコードの変更・修正で可能にするための
開発用の機能という位置づけのはずなのですが・・・
> 当然ソースのモデル(POCO?)を修正することになると思いますが、モデルを修正しWEB発行
> しサーバーにファイルしてサイトにアクセスすると、DBが再作成されデータが消えてしまう
> ようなのです。それに対してデータの再投入をするのがベストプラクティスなのでしょうか?
> 例えばモデルが変わってもDBを再作成せずに、手動でDB変更して運用するのが普通な気がし
> ています。
上にも書きましたが、それは開発時に限る話で、運用環境でそういうことはないところまで EF
Code First の機能を利用して作り上げるという話になると思います。
とは言え、運用状況で変更が絶対ないということもないでしょうから、そうなったら「手動でDB
変更」というのが選択肢になると思いますが。
> 新規のWEBアプリなのでコードファーストで試していますが、現状、モデルの変更の都度データ
> を再投入しており、いまいちメリットを理解できておりません。
データベースを自動的に削除して再作成するように設定してませんか? それを避けるために
Migration 機能というのがありますが。使ってますか?
そのあたりをご存じなければ、以下のチュートリアルの最初から「Code First Migrations と展開」
のところまでやってみてはいかがですか。
MVC 5 を使用する Entity Framework 6 Code First の概要
https://docs.microsoft.com/ja-jp/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/
記事No.96305 のレス /過去ログ167より /
関連記事表示
削除チェック/
■96309
Re[2]: 本番環境にコードファーストで作成したDBの変更
□投稿者/ Saipon -
(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機能の概要として、チュートリアルには、
「このメソッドは、実稼働環境にアプリケーションを展開するまで、データベースとデータ モデルの同期の維持がうまく機能します。 アプリケーションが運用環境で実行されている場合、通常は保持するデータを格納し、新しい列の追加などの変更を行うたびにすべてのデータを失わないようにします。」
とありますが、本番環境でも使えるものと考えて良いのでしょうか。
もしくはその辺りの段取りが分かる記事や書籍などご存知だったりしますでしょうか。
記事No.96305 のレス /過去ログ167より /
関連記事表示
削除チェック/
■96312
Re[3]: 本番環境にコードファーストで作成したDBの変更
□投稿者/ Saipon -
(2020/11/10(Tue) 18:44:30)
改めてMigration機能を試してみたところ、あっけないほどエラー無く動きました。
モデルの変更が同期されて、データも残り、履歴も残る。ものすごく便利ですね。
が、やはり本番環境への移行のイメージが沸きません。
VisualStudio2019のプロジェクト右クリックの「発行」から公開方法を「ファイルシステム」にしているのですが、
それをサイトのフォルダにアップしてアクセスするとDBが作成されるという流れは一般的では無いのでしょうか?
(先にご指摘受けたワーカープロセスの権限問題はありますが。)
DBの変更についても、やはり手動が最有力でしょうか。
そもそもAdd-MigrationやUpdate-Databaseを本番サーバー上で流す方法もまだ分からない状態ではありますが。。
記事No.96305 のレス /過去ログ167より /
関連記事表示
削除チェック/
■96311
Re[3]: 本番環境にコードファーストで作成したDBの変更
□投稿者/ WebSurfer -
(2020/11/10(Tue) 18:23:13)
■
No96309
(Saipon さん) に返信
> CreateDatabaseIfNotExistsに変更しても再作成が無くなるだけで、モデルが変更されました、
> とエラーになり、結局、DBの再作成を自動でやるか手動でやるかの違いと認識してしまってました。
なぜそうなったのかきちんと確認してないですよね。エラーの原因は、何か変更した結果、 DB
とコードの整合が取れなくなったからではないのですか? であれば、当たり前の結果のように
思いますけど。
> ちなみにMigration機能の概要として、チュートリアルには、
> 「このメソッドは、実稼働環境にアプリケーションを展開するまで、データベースとデータ
> モデルの同期の維持がうまく機能します。 アプリケーションが運用環境で実行されている場合、
> 通常は保持するデータを格納し、新しい列の追加などの変更を行うたびにすべてのデータを失わないようにします。」
> とありますが、本番環境でも使えるものと考えて良いのでしょうか。
どうしてそう解釈できるのか分かりませんが、とりあえず解釈の仕方は置いといて・・・
良くないと思います。
運用中の SQL Server に EF Code First の Migration で変更をかけるなんてとんでもない
と思います。
そもそも、IIS のワーカープロセスに権限がないのでできないのでは? その時だけそのため
に SQL Server の sa 権限を与えるとかは非現実的では?
質問者さんと質問者さんの属する組織が 100% 責任を持つと言われても、もし自分が客なら
絶対に許可しないと思います。
でも、まぁ、自分には止める権利はないのでご勝手に。
記事No.96305 のレス /過去ログ167より /
関連記事表示
削除チェック/
■96313
Re[4]: 本番環境にコードファーストで作成したDBの変更
□投稿者/ Saipon -
(2020/11/10(Tue) 18:58:55)
■
No96311
(WebSurfer さん) に返信
入れ違いで投稿してしまいました。
> なぜそうなったのかきちんと確認してないですよね。エラーの原因は、何か変更した結果、 DB
> とコードの整合が取れなくなったからではないのですか? であれば、当たり前の結果のように
> 思いますけど。
はい。エラーの原因が突き止められなかったので一旦諦めてしまいました。
> どうしてそう解釈できるのか分かりませんが、とりあえず解釈の仕方は置いといて・・・
解釈につきましては、
>>モデルの同期の維持がうまく機能します。 アプリケーションが運用環境で実行されている場合、
>>通常は保持するデータを格納し、新しい列の追加などの変更を行うたびにすべてのデータを失わないようにします。」
このチュートリアルの一文で「運用環境で実行されている場合」とあった為、
本番でも何かしらの方法でMigration機能を使うことを意味しているのかと思いました。
結局、Migrationは開発用、ということが理解できていなかった為と思います。
> 良くないと思います。
>
> 運用中の SQL Server に EF Code First の Migration で変更をかけるなんてとんでもない
> と思います。
私も本番にUpdate-Databaseをするのは、方法があったとしてもさすがに気が引けておりました。
となると、結局、コードファースト関係なく、開発環境でDB作成のスクリプトを作成し、
本番環境で構築する、というのが普通なのでしょうか。
この辺りが情報が見つけられず、周りにエンジニアもいない為、分からなかった点です。
記事No.96305 のレス /過去ログ167より /
関連記事表示
削除チェック/
■96314
Re[5]: 本番環境にコードファーストで作成したDBの変更
□投稿者/ WebSurfer -
(2020/11/10(Tue) 19:57:09)
■
No96313
(Saipon さん) に返信
> となると、結局、コードファースト関係なく、開発環境でDB作成のスクリプトを作成し、
> 本番環境で構築する、というのが普通なのでしょうか。
普通かどうかは質問者さんの環境によるはずなので分かりませんが、EF Code First を利用
する前はそうしていたということであれば、同じようにすれば良いと思いますけど。
記事No.96305 のレス /過去ログ167より /
関連記事表示
削除チェック/
■96319
Re[6]: 本番環境にコードファーストで作成したDBの変更
□投稿者/ Saipon -
(2020/11/11(Wed) 12:01:16)
■
No96314
(WebSurfer さん) に返信
> 普通かどうかは質問者さんの環境によるはずなので分かりませんが、EF Code First を利用
> する前はそうしていたということであれば、同じようにすれば良いと思いますけど。
“普通”という言い方が悪かったです。すみません。
世の中、どんな環境があるのか(オンプレやAzureとかそういう違いのことですかね)、
それに対しエンジニアがどのようにしているかが分からないので、
「こんな環境の場合、こんなやり方をしているよ。」という一例が知りたかったのです。
自分はEF Code Firstを利用する前は、オンプレばかりでスクリプトを使ってましたが、
今回、EF Code Firstでファイルシステムでのデプロイを利用し初回サイトアクセス時にDBが作成されたのですが、
WebSurferさんは、EF Code Firstを使用した場合、どんな環境が多くて、その場合にどのようにDBを作成しているのでしょう。。
先のチュートリアルのサイトでは、AzureのApp Serviceにデプロイする流れの中で、
「「Code First Migrations の実行 (アプリの起動時に実行)」を設定することで、web.configにMigration用の接続文字が追加される」
とありますので、その辺りがヒントかと思ってますが、これをファイル発行ではどのようにするかが分かりませんでした。
引き続き調査をしていて、以下のようなサイトを見つけたので、現在確認中です。
https://github.com/dotnet/AspNetDocs.ja-jp/blob/live/aspnet/web-forms/overview/deployment/visual-studio-web-deployment/deploying-to-iis.md
記事No.96305 のレス /過去ログ167より /
関連記事表示
削除チェック/
■96321
Re[7]: 本番環境にコードファーストで作成したDBの変更
□投稿者/ 魔界の仮面弁士 -
(2020/11/11(Wed) 12:39:11)
■
No96319
(Saipon さん) に返信
> 引き続き調査をしていて、以下のようなサイトを見つけたので、現在確認中です。
>
https://github.com/dotnet/AspNetDocs.ja-jp/blob/live/aspnet/web-forms/overview/deployment/visual-studio-web-deployment/deploying-to-iis.md
上記の公開サイトはこちら。
https://docs.microsoft.com/ja-jp/aspnet/web-forms/overview/deployment/visual-studio-web-deployment/deploying-to-iis
記事No.96305 のレス /過去ログ167より /
関連記事表示
削除チェック/
■96322
Re[8]: 本番環境にコードファーストで作成したDBの変更
□投稿者/ Saipon -
(2020/11/11(Wed) 12:55:23)
■
No96321
(魔界の仮面弁士 さん) に返信
> 上記の公開サイトはこちら。
>
https://docs.microsoft.com/ja-jp/aspnet/web-forms/overview/deployment/visual-studio-web-deployment/deploying-to-iis
ありがとうございます!
画像が無くて困っておりました!
記事No.96305 のレス /過去ログ167より /
関連記事表示
削除チェック/
■96323
Re[7]: 本番環境にコードファーストで作成したDBの変更
□投稿者/ WebSurfer -
(2020/11/11(Wed) 13:13:54)
■
No96319
(Saipon さん) に返信
表題の「本番環境にコードファーストで作成したDBの変更」から、開発環境に作った SQL Server
の DB を最初に運用サーバーにデプロイするときにどうするかという話に変わってきているよう
な気がしますが・・・
そういう話ですと、自分はお役に立てないです。他の方の回答をお待ちください。
記事No.96305 のレス /過去ログ167より /
関連記事表示
削除チェック/
■96324
Re[8]: 本番環境にコードファーストで作成したDBの変更
□投稿者/ Saipon -
(2020/11/11(Wed) 13:35:33)
■
No96323
(WebSurfer さん) に返信
> ■
No96319
(Saipon さん) に返信
>
> 表題の「本番環境にコードファーストで作成したDBの変更」から、開発環境に作った SQL Server
> の DB を最初に運用サーバーにデプロイするときにどうするかという話に変わってきているよう
> な気がしますが・・・
>
> そういう話ですと、自分はお役に立てないです。他の方の回答をお待ちください。
>
確かに表題の質問ですと「手動でDB変更」という回答を頂いてましたね。
ありがとうございました。
話が変わってしまったので、この質問はクローズします。
しかし、本番サーバーに関する書籍や記事、見つからないものですねぇ。(探し方の問題かもしれませんが。。)
皆さんどうされてるんでしょうねぇ。
記事No.96305 のレス / END /過去ログ167より /
関連記事表示
削除チェック/
<<
0
>>
パスワード/
-
Child Tree
-