1

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つの外部キーを生成します。

4

1 に答える 1

3

編集:私は問題を見つけたと思います、バグはEFです

あなたは正しいと思います。このADO.NETチームのブログ投稿は、コメントの問題に対処しているようです。つまり、PostConfigurationクラスでCascadeOnDelete=falseを設定しています。

于 2010-11-11T08:28:33.990 に答える