質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

2回答

1036閲覧

Code Firstの自動マイグレーションの方法

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

1クリップ

投稿2019/03/09 15:07

Code Firstで自動マイグレーション設定を行いました。

新しくModelを作りテーブルを追加しようとしたのですが、

"テーブル ' AAAA ' は既に存在しています。"
※ AAAAは、既に追加されている既存テーブルです。

と、いうエラーが出てしまします。

コンソールから下記のコマンドを実行した後にデバッグすると、エラーが出ず、テーブルが追加されます。
Update-Database -ConfigurationTypeName Configuration

聞きたい事

  1. 自動マイグレーションであっても、PowerShellのコマンドを実行するのでしょうか?

  それとも、書き方を間違えているのでしょうか?

2. 自動マイグレーションでできる事を確認したいのですが…

こちらのサイトにあるように、Contextを動的に切り替えています。
https://www.pine4.net/Memo2/Article/Archive/Entity-Framework-Code-First-Use-Custom-Database

やりたい事は、「A-DB」「B-DB」「C-DB」があったとして、ログインページからスタートし、
ログインしたユーザー毎にDBを振り分けています。

自動マイグレーションで、ユーザーAがログインした時には「A-DB」に変更が反映され、ユーザーBがログインした時には、
「B-DB」に変更が反映されるような仕組みを作るのがゴールです。

そもそも自動マイグレーションでこういうケースに対応できるのでしょうか?

参考になりそうなサイトを教えてくださるのでも構いません。見解をいただけると幸いです。
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自動マイグレーションっていうのはアップデート(Update-Database)のときにマイグレーションを自動で行うことです。
アップデートを自動で行うのは自動アップデートです。
自動マイグレーションは出来ていて、求めているのは自動アップデートのほうですよね?
自動アップデートは、SetInitializer に MigrateDatabaseToLatestVersion のインスタンスを渡すことで実現します。
この MigrateDatabaseToLatestVersionのインスタンスをユーザー別にすれば良いだけだと思います。
試してませんが…

投稿2019/03/10 05:59

hihijiji

総合スコア4150

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

  1. 自動マイグレーションであっても、PowerShellのコマンドを実行するのでしょうか? それとも、書き方を間違えているのでしょうか?

以下の記事によると "テーブルの追加 ( すなわち、データベースコンテキストクラスにおける、DbSet<T> なプロパティの追加 ) も同じように、既存のデータを壊すことなく、自動でデータベース構造の更新が実施される" とのことです。

Entity Framework で自動マイグレーション
https://devadjust.exblog.jp/21281742/

実際に検証して確認したわけではないですが、記事は信用できそうな気がします。質問者さんのやり方の問題ではないでしょうか。

  1. 自動マイグレーションでできる事を確認したいのですが…

自動マイグレーションで、ユーザーAがログインした時には「A-DB」に変更が反映され、ユーザーBがログインした時には、「B-DB」に変更が反映されるような仕組みを作るのがゴールです。

上の「変更が反映」というのが具体的にどういうことか不明ですが、要するに EF Code First でいう Code を書き換えることにより、自動的にマイグレーションが実行され、DB に Code を書き換えた結果が反映されるようにしたいという話ですよね。

その理解で正しければ「自動マイグレーションでできる事」ではないと思います。普通、Web アプリで、一般ユーザーが Code を書き換えることはできないので。

そもそも運用環境の Web アプリでユーザーにそのようなことを許すことはあり得ないので、上に書いた私の理解が間違っているような気もしますが、そうであればどう違っているか指摘ください。

投稿2019/03/10 03:08

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問