Entity Framework Code Firstからデータベースを生成すると、このエラーが発生します。
スクリプトに問題はありませんでした。
alter table [dbo].[Votes] add constraint [Post_Votes] foreign key ([Post_Id]) references [dbo].[Posts]([Id]) on delete cascade;
alter table [dbo].[Votes] add constraint [User_Votes] foreign key ([Voter_Id]) references [dbo].[Users]([Id]) on delete cascade;
それぞれの参照は異なるテーブルへの参照です!
テーブルごとに削除カスケードを1つだけ持つことができますか?
Edit: I think I found the problem, the bug is EF:
ユーザー、投稿、投票の3つのテーブルがある場合。
そして関係:
Post.AuthorId-> User.Id Votes.PostId-> Post.Id Votes.UserId-> User.Id
投稿を削除すると、投票へのパスが2つあるため、SQLは正しくエラーを生成します。ユーザー->投票とユーザー->投稿->投票
しかし、エンティティフレームワークはこれを検出せず、削除カスケードで3つの外部キーを生成します。