モデル駆動型のアプリを作っていて、不要になったテーブルや列、リレーションを消そうとしたとき、
「このテーブルに依存関係が存在するため、削除できません。」
みたいな表示が出て、テーブルを消すことができなかった。
このメッセージが出たときの解消法がわからず、しばらくはまったので対処法をメモ。
テーブルを消そうとしたら
ある日、不要になったテーブルを消そうとしたらこんなメッセージが表示された。
とりあえず、このテーブルを使っていたアプリ自体を消してみたが、エラーが消えず。。。
他テーブルと関連とかで結びついて消せないのかな、と思って、消そうとしているテーブルのフィールドやリレーションシップを消そうとしても同じようなメッセージが出てしまう。。。
こんな感じでテーブルを消せずにしばらくはまった。
依存関係を消せと言われても。。。
公式の情報を見ても「依存関係を消してからテーブルを消してね」と書いてあるだけ。。。
それはわかっちょる!
「依存関係を表示」ボタンを押して依存関係を調べなさい。
みたいな記事もあったけど、そもそもそのボタンがどこにあるかわからん!!
ソリューションから依存関係を検索、削除できる
前述の「依存関係を表示」ボタンを発見。テーブルを消そうと思いたってから半日が経過していた。。。
まずは、「ソリューション」から「既定のソリューション」を開く。
既定のソリューションを開いたら「クラシックに切り替える」を選択。
クラシック表示にしなくても消せるんだろうけど、個人的にクラシック表示の方が消しやすかった。
すると、こんな画面になるので、「エンティティ(テーブル)」を開く。
消したいエンティティが見つかると思うので、まずはここで「削除」を試してみる。
Power Appsから消せなかったエンティティも、この操作で消せることもある。
もしこんなメッセージが出て消せないようなら、
「依存関係を表示」ボタンを押して、依存関係を探す。
そのテーブルの依存関係を調べてみると思いもよらない依存関係ができているので、それらを丁寧にほどいていく。
依存関係を消すか、依存先を消すかしてすべての依存関係を消してやれば、無事テーブルを消すことができる。
前提として
テーブルは不用意に消してはいけない。
特に、既に動いているシステムのテーブルを消すときは、細心の注意を払った上で3回くらい本当に消してよいのか?を考えてから消すべき。
テーブルを消すためにこれだけ苦労したのは、そもそもテーブルは気軽に消すものじゃない、という意思を感じる。
今回は僕が消したテーブルはテストアプリでのみ使用していたやつなので、容赦なく削除。
まとめ
「依存関係が~」なメッセージが出てテーブルが消せなかったら、、ソリューションから依存関係を調べて1つ1つ消していく。
ちなみに、モデル駆動型アプリを消してテーブルとの依存関係を消したつもりになっていても、ひっそりとダッシュボードとかが残っていてテーブルとの依存関係を持っていることがあるようなので、注意する。
コメント