簡體   English   中英

實體框架代碼優先參考約束問題

[英]Entity Framework Code First Reference constraint issue

我的模型出現問題,並試圖刪除記錄。 我已將其縮小以嘗試顯示我遇到的問題

我有一個名為CollectedBags的實體,具有一個ID和名稱。

然后,我有一個名為BankingRun的實體,其中包含CollectedBags的列表

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

該模型自動在兩者之間添加關系,並且在數據庫中向收集的包中添加一列以引用BankingRun。

當我想刪除BankingRun而完全不影響CollectedBags表時,會出現問題。 CollectedBags記錄並不總是屬於BankingRun。 我嘗試刪除記錄的任何事情顯然都會導致兩個表之間的沖突,但是我對實體框架的缺乏了解使我陷入困境,而沒有編寫一些SQL來物理刪除CollectedBags中的Banking Run ID

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; }
}

然后,我嘗試使用多個CollectedBags創建BankingRun后刪除它

對於Fluent API,請使用以下代碼:

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {

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

這只是一個例子,但重要的是.WillCascadeOnDelete(false);

基本上,這將防止在刪除一個實體時所有其他相關實體也被刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM