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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■29245  Re[10]: 行末のセミコロンの省略
□投稿者/ たくボン -(2008/12/06(Sat) 01:58:25)
    No29244 (はいこーん さん) に返信
    > ■No29242 (たくボン さん) に返信
    >>俺もよくVBなのに;や()書いてしまいます。
    > 
    > セミコロンはともかく () はいいでしょう。
    
    へぇ〜、いいんだ。
    
    For (i as integer = 0 To 10)
       '…
    Next
    
    Using (sr As New IO.StreamReader("hoge.txt"))
       '…
    End Using
    
    きっと叱られてるのは俺が悪いんですね。
記事No.29161 のレス /過去ログ53より / 関連記事表示
削除チェック/

■39437  Re[11]: クリックの有効範囲を決める
□投稿者/ επιστημη -(2009/08/07(Fri) 16:36:06)
>
    > 買って読んで動かしていますが
    > さっぱりわかりません。

    - 読み取れていない
    - 知りたいことが書かれていない
    - 書いてあるけどスットコドッコイ
    - ほかのなにか

    のいずれか。
    「Visual C#」の本じゃなくて
    「C#」の本をオススメ。
    文法/構文をきっちり説明したやつ。

    #「三日でわかる〜」のたぐいは
    # 三日でわかる程度の内容です。
記事No.39376 のレス /過去ログ68より / 関連記事表示
削除チェック/

■53536  Re[6]: form1_paintの処理を一時停止する方法ありますか?
□投稿者/ 裕猫 -(2010/09/17(Fri) 13:05:05)
    No53535 (おのでら さん) に返信
    > 裕猫さんこんにちはおのでらです。
    >
    > コントロールの付け替えなのでレイアウト変更イベントを止めるのも一案でしょうか。
    >
    >
    > // レイアウト ロジックの一時停止
    > [コントロール追加先のコントロール].SuspendLayout();
    >
    > // コントロール付け替え処理 //
    >
    > // レイアウト要求実行
    > [コントロール追加先のコントロール].ResumeLayout();
    >
    >
    > まあ改善されるかどうかは配置するものや描画内容にもよりますが
記事No.53507 のレス /過去ログ90より / 関連記事表示
削除チェック/

■91158  Re[2]: Windows10のバージョンについて
□投稿者/ とっちゃん -(2019/06/04(Tue) 15:42:36)
    パッケージベンダーとしては、アプリに依存するので個別に問い合わせてください。
    という回答しかできないかなぁ。。。w

    目安として、Windows 自身のサポート期間を載せておきます。
    この期間内なら大半のアプリはサポート対象としています。
    ただし、アプリによっては延長に入った製品はサポートしないとしているものもあります。
    このあたりはベンダーのサポートポリシーの問題ですね。

    「Windows ライフサイクルのファクト シート」
    https://support.microsoft.com/ja-jp/help/13853/windows-lifecycle-fact-sheet
記事No.91156 のレス /過去ログ157より / 関連記事表示
削除チェック/

■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)
記事No.96305 のレス /過去ログ167より / 関連記事表示
削除チェック/

■96322  Re[8]: 本番環境にコードファーストで作成したDBの変更
□投稿者/ Saipon -(2020/11/11(Wed) 12:55:23)
記事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 -