2013-10-29 94 views
0

我遇到了模型問題並試圖刪除記錄。我減少它試圖顯示我有問題實體框架代碼第一個參考約束問題

我有一個名爲CollectedBags與實體和名稱的實體。

然後我有一個實體,稱爲BankingRun其中包含CollectedBags

public virtual List<CollectedBags> Bags { get; set; }

名單這種模式會自動將兩者之間的關係,並在數據庫中增加了一個列collectedbags引用BankingRun 。

當我想要在不影響CollectedBags表的情況下刪除BankingRun時,就會出現問題。收集的郵袋記錄並不總是屬於BankingRun。 什麼我嘗試顯然是兩個表之間的衝突刪除一條記錄的結果,但我缺乏與實體框架的知識離開我卡住了,而無需編寫一些SQL以物理刪除銀行業運行ID在CollectedBags

public class CollectedBags 
{ 
    public long CollectedBagsId { get; set; } 
    public string Name { get; set; } 
} 

public class BankingRun 
{ 
    public long BankingRunId { get; set; } 

    public DateTime DateTimeVisited { get; set; } 

    public virtual List<CollectedBags> Bags { get; set; } 
} 

然後我試圖刪除其BankingRun已與多個CollectedBags

+0

你能發佈更多的代碼嗎?此外,該錯誤消息將是有用的。 –

回答

1

用流利的API使用此代碼創建後:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 

    modelBuilder.Entity<User>() 
     .HasOptional(a => a.UserDetail) 
     .WithOptionalDependent() 
     .WillCascadeOnDelete(false); 
    } 

這只是一個例子,但在這裏最重要的事情是.WillCascadeOnDelete(false);

它會防止當你刪除一個實體時,所有其他相關的被刪除以及基本上。

+0

感謝您的幫助。除非我錯過了某些東西,否則當我創建我的'BankingRun'時,它會導致錯誤,說它無法投射'CollectedBags'列表來鍵入'CollectedBags'。我不完全瞭解你的解決方案是如何工作的,但我不希望'CollectedBags'在BankingRun中成爲一個可選的依賴項。當'BankingRun'存在時,我需要這種關係,但是當我想要刪除一個時,我需要它完全消失。 – MichaelMcCabe

+0

正如我所說,這是一個例子。你需要相應地調整代碼,但這裏的東西是刪除級聯; – Tico