C# 忽略在级联删除时删除特定实体
我拥有以下实体:C# 忽略在级联删除时删除特定实体,c#,entity-framework-core,C#,Entity Framework Core,我拥有以下实体: public class ShoppingCartItem { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int ShoppingCartItemId { get; set; } public virtual Product Product { get; set; } public int Quantity { get; set; }
public class ShoppingCartItem
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ShoppingCartItemId { get; set; }
public virtual Product Product { get; set; }
public int Quantity { get; set; }
public string ShoppingCartId { get; set; }
public DateTime ItemAddedToCart { get; set; }
}
从产品
到ShoppingCartItem
之间存在一对一的外键关系。
我的问题是,如何使entity framework core跳过删除
产品上的ShoppingCartItem
实体级联删除?您可以在构建器对象中使用以下内容
builder.Entity<ShoppingCartItem>()
.HasOne(s => s.Product)
.WithOne(p => p.ShoppingCartItem)
.Metadata.DeleteBehavior = DeleteBehavior.Restrict;
builder.Entity()
.HasOne(s=>s.Product)
.WithOne(p=>p.ShoppingCartItem)
.Metadata.DeleteBehavior=DeleteBehavior.Restrict;
我在您的答案中使用了一个(p=>p.ShoppingCartItem)
尝试了这个方法,但是在产品
实体中没有来自ShoppingCartItem
的参考。只有在ShoppingCartItem
实体中引用产品
实体的另一种方式。是否应在产品
实体中引用ShoppingCartItem
。。?对我来说,这感觉没有必要..也许我应该删除产品
实体引用,在购物车项目
实体中使用公共int ProductId
。这不是一对一关系吗?试着完全删除WithOne。以下文档说明您需要声明从一个实体到另一个实体的引用:我认为应该只需要定义从“父”到“子”的foreignkey关系,而不需要定义从“子”到“父”的foreignkey关系。一对一应该有双方的参考