2014年10月18日
川俣晶の縁側ソフトウェア技術雑記 total 4863 count

なぜASP.NET MVCのサンプルアプリが実行するごと常にテーブルを空にするのか

Written By: 川俣 晶連絡先

「とあるASP.NET MVCのサンプルアプリを実行したところ、常にテーブルを空にされた。データを入れても、再度実行すると消えちゃう」

「原因はなんだい?」

「イニシャライザがDropCreateDatabaseAlways<TContext> クラスを継承していたら。これは初期化時に必ずデータベースを作り直す。ほとんど実用性がない」

「永続性が要求されないデータにしか使えないが、そんなデータは希有だってことだね」

「そうだ。実際にはAzureの複数インスタンス間で情報を共有するにも使えない」

「1つのインスタンスが再起動するだけで中身が消されたら他のインスタンス間の情報の共有で困るわけだね」

「そうそう。使い道は本当に限定されているのだろう」

「それで解決方法は?」

「DropCreateDatabaseAlwaysやめてCreateDatabaseIfNotExistsを使うのさ。これならまだ無い時にしかテーブルを作成しないので、既にデータが入ったテーブルは消されない」

「たったそれだけで解決できるの?」

「そうそう。たったそれだけ」