VS2012 とエンティティ デザイナーを使用して、データベースとモデルの両方を生成しています。Table1 から Table1and2JoinTable から Table2 への非常に基本的なシナリオがあります。学生、クラス、学生クラスのようなもの。多くのクラスに多くの生徒を含めることができます。カスケード削除をしたいと思います。したがって、学生を削除すると、その学生 ID の StudentClass 結合テーブル内のすべての行が削除されます。クラスを削除する場合も同様で、そのクラス ID の StudentClass 内のすべての行が削除されます。デザイナーで多対多の関連付けを設定し、カスケード削除オプションを設定した後、データベースを生成しようとすると、次のエラーが発生します。
エラー 132: 関係 'Model1.StudentClass' の終了 'Student' は、その多重度が ' ' であるため、操作を指定できません。多重度 ' ' の端には操作を指定できません。
以下に小さな例を示します。
作成された関連付けは次のとおりです。
結果のエラーメッセージは次のとおりです。
データベース テーブルを生成するための SQL コードの一部を次に示します。
-- Creating foreign key on [Students_Id] in table 'StudentClass'
ALTER TABLE [dbo].[StudentClass]
ADD CONSTRAINT [FK_StudentClass_Student]
FOREIGN KEY ([Students_Id])
REFERENCES [dbo].[Students]
([Id])
ON DELETE NO ACTION ON UPDATE NO ACTION;
-- This should be ON DELETE CASCADE ON UPDATE NO ACTION;
GO
-- Creating foreign key on [Classes_Id] in table 'StudentClass'
ALTER TABLE [dbo].[StudentClass]
ADD CONSTRAINT [FK_StudentClass_Class]
FOREIGN KEY ([Classes_Id])
REFERENCES [dbo].[Classes]
([Id])
ON DELETE NO ACTION ON UPDATE NO ACTION;
-- This should be ON DELETE CASCADE ON UPDATE NO ACTION;
GO
データベース スクリプトを編集して on delete cascade オプションを追加するだけで、これを回避する方法を知っています。しかし、プロジェクトが大きくなるにつれて何度もデザイナーに戻ってくるので、毎回このステップを覚える必要がないので、これはしたくありません。
誰もこれを解決する方法を考え出しましたか?