2012-01-23 1 views
0

特定のモデルレコードへの参照が存在するかどうかをチェックしてそのレコードを削除するのがベストプラクティスですか?基本的には、イメージを表すモデルと、イメージに関連付けられたすべてのメタデータがあります。他のモデルには、1つ以上の画像への参照があります(モデルによって異なります)。MVC3は、削除前のモデルレコードへの参照を確認します

たとえば、「MainImage」と「AltImage」を持つ「アイテム」があります。どちらもImageモデルへの参照に過ぎません。アイテムレコードを削除すると、2つのイメージが他のアイテムや他のテーブルによって参照されているかどうかをチェックし、そうでない場合はイメージを削除する必要があります。
どうすればいいですか?

+1

あなたはASP.NET MVC3を使用していると言いますが、DALには何を使用していますか?コントローラで直接クエリを実行していますか? – SoWeLie

+0

@SoWeLieが得意とするのは、MVCはレコードの作成や削除とは何の関係もないということです。それは完全にデータベースにとらわれない。 MVCではなく、使用しているデータベース技術について質問したいと思っています。 –

+0

モデル生成にEntity Frameworkを使用しています。 –

答えて

0

データベースを使用しているため、イメージの外部キー制約を使用して参照整合性を維持します。データベースまたはEFは、まだ参照されている場合にイメージを削除できないようにします。この例外をキャッチして、イメージを削除せずに要求の処理を続行できます。

これは、これらの設定に役立つ可能性のある投稿Inferring Foreign Key Constraints in EFです。あなたが好むものに基づいて

0

カップルのアイデア:

あなたDB

にトリガーを作成します代替IMGを削除すること。 メインレコード行を削除するたびに、他のレコードも削除されます。 (NHibernateのに基づいて)

あなたのエンティティの枠組みの中で、代替画像がコマンドをカスケード接続する可能性があるかもしれないことを確認します。その場合、1つのイメージを削除すると、もう1つのイメージも削除されます。 Here is one example from google how to do this

ほとんど不器用が、最も簡単です:あなたは、画像を削除するとき

は両方のレコードを削除します。

関連する問題