簡體   English   中英

實體框架級聯首先刪除0..1至0..1代碼

[英]Entity Framework Cascading Delete 0..1 to 0..1 code first

我的模型中有以下三個poco課程

public class Item 
{
    public Guid Id { get; set; }
    public virtual DbImage Image { get; set; }
    //other properties
}

public class Creature
{
    public Guid Id { get; set; }
    public virtual DbImage Image { get; set; }
    //other properties
}

public class DbImage 
{
    public Guid Id { get; set; }
    private byte[] ImageBytes { get; set; }
}

有什么方法可以通過刪除Item或Creature來自動刪除相應的圖像來配置Fluent API? 每個圖像都屬於一個項目或一個生物。

我已經嘗試了以下流利的API配置:

public class Context : DbContext
{
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Item>().HasOptional<DbImage>(i => i.Image).WithOptionalDependent().WillCascadeOnDelete();
    }
}

這導致以下遷移:

AddForeignKey("dbo.Items", "Image_Id", "dbo.DbImages", "Id", cascadeDelete: true);

現在的結果是,刪除圖像會導致刪除相應的物品或生物,而不是相反。 我嘗試了許多其他事情,但是我無法為實現這一目標而采取正確的方法。 有人可以告訴我這是否完全有可能嗎?

為此,您應該在DbImage網站上根據需要定義關系:

modelBuilder.Entity<Item>().HasOptional<DbImage>(i => i.Image).WithRequired().WillCascadeOnDelete();

由於此原因,不會將其他Image_Id屬性添加到Item中,而是將基於Item和DbImage中的主鍵進行交配。

暫無
暫無

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

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