我正在使用VS2012和實體設計器來生成數據庫和模型。我有一個Table1到Table1and2JoinTable到Table2的非常基本的場景。像學生,班級,學生類。你可以有許多班的許多學生。我想要一個級聯刪除。因此,如果您刪除學生,StudentClass連接表中的任何行都將被刪除以獲得該學生ID。與刪除類相同,StudentClass中的任何行都將刪除該類的id。在設計器中設置多對多關聯並設置級聯刪除選項後,當您嘗試生成數據庫時,會出現以下錯誤:如何在多對多關係中啓用Edmx Designer中的級聯刪除
錯誤132:結束'學生'關係'Model1.StudentClass'由於其重複性爲'',因此無法指定操作。不能在多重性爲''的末端指定操作。
這裏是一個小例子:
下面是創建的關聯:
,將所得的錯誤消息:
這裏是生成數據庫表的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選項。但是,我不想這樣做,因爲隨着項目的發展,我會多次回到設計師身邊,我不想每次都要記住這一步。
有沒有人想出瞭如何解決這個問題?
級聯刪除多對多關係應該是自動的,不需要任何配置。 –
是的,它應該是默認行爲,但它不是。生成表的SQL語句對於連接表具有以下內容:ON DELETE NO ACTION。這應該讀取ON DELETE CASCADE。我將完整的SQL語句添加到原始問題中。 –