[英]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.