2012-01-26 18 views
0

私は2つのエンティティと1つの関係を持つ単純なエンティティデータモデルを持っています。簡略化のために、PersonとBookを考えてみましょう。 (つまり、0冊以上の本があり、書籍には所有者が必要です)設計更新後のデータマイグレーション

システムはうまく動作し、データが入っています。

今私は人から継承された他のエンティティを作成する必要があります(つまり学生、教師)

私はそれらを作成し、それに応じて、私のソフトウェアを更新すると、すべてがこの新しいモデルで正常に動作します。

私のデータには、どの人物が教師であり、誰が教師であるかを知っていて、私が教える生徒や教師に関する追加情報があります新しいモデルに配置します。

質問はどのようにデータを移行するのですか? Personインスタンスを削除する前にStudentとTeacherを追加することはできません。Personインスタンスに重複IDが作成されるためです。私は人を削除することができませんエラーを作成します。 (「DELETE文がREFERENCE制約と競合しました」)

このデータ移行はどのように達成できますか。あなたは本当にあなたがPersonを削除しないでください継承をマッピングしている場合は

おかげ

答えて

0

は - PersonStudentTeacherのいずれかであるので、あなただけ(TPTの場合には)正しい列(TPHの場合)または関連テーブルを追加する必要があります既存のデータを変更せずに使用できます。

この移行はSQLで行う必要があります。

+0

私はテーブルタイプを使用しています。私は.NETでこれをやろうとしていました。だから、私はエンティティを削除して、それをサブタイプとして作成しようとしたのです。どの人が学生で、教師であるかに関する情報はDBには存在しません。だからこそ私は.NETでそれをやってみることにしました。 – cellik

+0

あなたは本当に 'Person'をサブタイプに変更できないので、新しいEFモデルで.NETでそれを行うことはできません。その人とそのすべての関係を削除し、同じ関係を持つ新しいエンティティを作成する必要があります。これは、データベース操作が必要ではない多くのことです。 1回の移行の場合は、データを取得してSQLを実行してデータベースを新しい期待状態にするヘルパーツール(コンソールアプリケーション)を作成するだけです。 –

+0

これは一度だけのことです。私はC#からExecuteNonQueryコマンドを使ってやってしまった。基本的には、StudentとTeacherのテーブルに必要なデータを追加しました。 – cellik

関連する問題