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;

每个参考都指向不同的表!

每个表我只能有一个删除级联?

Edit: I think I found the problem, the bug is EF:

如果我有 3 个表:用户、帖子和投票。

和关系:

Post.AuthorId -> User.Id Votes.PostId -> Post.Id Votes.UserId -> User.Id

Sql 正确生成错误,因为如果我删除帖子,我将有 2 个投票路径:用户 -> 投票和用户 -> 帖子 -> 投票

但是实体框架没有检测到这一点并在删除级联时生成 3 个外键。

4

1 回答 1

3

编辑:我想我找到了问题,错误是 EF

我认为你是对的。此 ADO.NET 团队博客文章似乎解决了评论中的问题,即在 PostConfiguration 类中设置 CascadeOnDelete = false。

于 2010-11-11T08:28:33.990 回答