2013-10-08 38 views
0

DELETE語句與REFERENCE約束>「FK_dbo.VendorDocuments_dbo.VendorModels_VendorId」衝突。衝突發生在數據庫>「aegisv」,表「dbo.VendorDocuments」,「VendorId」列中。 該聲明已被終止。如何在使用實體框架從數據庫中刪除記錄期間解決衝突?

意思是我有一個VendorModel表,它有invoicedocument列表(它是一個帶有表供應商模型的外鍵vendorId的模型)。當我試圖從數據庫中刪除供應商模型時,我正在獲得上述例外。

我已經嘗試了各種東西,但我還沒有解決同樣的問題。

已添加以下代碼,但無效。

 modelBuilder.Entity<VendorDocument>() 
      .HasRequired(x => x.VendorModel) 
      .WithMany(u => u.VendorDocumemts) 
      .WillCascadeOnDelete(); 

請任何人都可以幫助我..謝謝。

+0

你可以發佈您的刪除操作?這可能是因爲當您將模型加載到刪除時,您不包括相關的實體。 – Evonet

+0

你的外鍵是可以空的嗎? –

回答

0

在點點代碼只是改變在這裏,試試吧: -

modelBuilder.Entity<VendorDocument>() 
      .HasOptional(j => j.VendorModel) 
      .WithMany(u => u.VendorDocumemts) 
      .WillCascadeOnDelete(true); 
+0

老兄已經嘗試相同,現在我在登錄時遇到下面的異常..多重性與角色'VendorDocument_VendorModel_Target'中的參考約束衝突在 – Vikas

+0

請參閱鏈接http://stackoverflow.com/questions/8007129/codefirst-ef4-1- MVC-對遺留數據庫重數,衝突 – kaushik0033

0

您必須啓用級聯刪除數據庫治也。 EF不負責級聯數據庫中的刪除。

EF負責SaveChanges()後ObjectContext的正確性。因此,EF嘗試將ObjectContext與期望的數據庫狀態同步到數據庫中預期的級聯之後。

因此,如果您在模型中創建了級聯刪除規則,則必須在數據庫中配置級聯刪除規則。 Tip 33

要啓用級聯刪除規則數據庫 - Enable CascadeDelete

相關問題