2010-11-11 59 views
1

從實體框架代碼優先生成數據庫時,出現此錯誤。引入FOREIGN KEY約束可能會導致循環或多個級聯路徑?

我didn't看到任何問題的腳本:

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外鍵。

回答

3

編輯:我想我找到了問題,錯誤是EF

我認爲你是正確的。 This ADO.NET team blog post似乎解決了註釋中的問題,即在PostConfiguration類中設置CascadeOnDelete = false。

相關問題