我們有一個系統,允許管理員在系統內創建新的內容類型,包括與其他表的外鍵鏈接。然後,管理員可以重建數據庫,然後創建表格和所有必要的關係,然後重新構建EDMX並重新編譯所有內容。像冠軍一樣工作(我沒有寫,或者我可能知道這個答案)。實體框架 - 反向外鍵檢查
我們有的一個缺點是,當用戶去刪除可能被另一個表中的項目鏈接的記錄時。由於參照完整性,這會引發錯誤。當然,我陷入了這種情況,但我現在可以提供的是一個通用的'你不能刪除這個項目,因爲它鏈接到某種類型的錯誤。我寧願檢查該項目是否可刪除,如果不是,則禁用該按鈕。
有沒有一種方法可以在運行時確定將要刪除的項目鏈接到哪個表/行?通常,我只是查詢相關表格,但由於這個應用程序的性質,我不知道那些其他表格在設計時會是什麼。
因此,在短期,如果我有:
富:FooID,FooName 酒吧:BarID,FooID,BarName 數值:PowID,FooID,PowName
是否有可能在運行時告訴一個由於來自Bar或Pow的FK連接,Foo中的行不能被刪除,如果可以,我可以告訴哪個表導致錯誤?
在此先感謝;首先在這裏發帖,所以請原諒任何禮節漏洞:)。
特別是從我非常粗略的描述和製作的表格中,你會說這個('可怕'部分)? – Chris 2011-05-12 09:56:11
是的,我在這裏和那裏遇到拉迪斯拉夫的答案,他們通常質量很高,但我對這個「可怕的建築」部分感到驚訝。 @拉迪斯拉夫:你能否就此擴大一點,因爲這不明顯,你的意思是? – 2011-05-12 10:39:00
@zespri,@Chris:如果您使用EF來定義模型,您可以定義數據庫並編寫使用模型的代碼,測試應用程序並部署它。模型的任何更改都由開發人員決定,該開發人員必須確保應用程序仍然有效,並且沒有任何用例被更改中斷。很顯然,在問題中描述的方法Admin可以觸發一些自動的真棒功能,它修改模型,重新生成類,重建程序集並重新部署應用程序違反了這個很難。我甚至不明白你爲什麼這樣做,你怎麼能使用未知功能? – 2011-05-12 10:44:28