Entity framework 如果存在关系,则防止删除-Fluent API

Entity framework 如果存在关系,则防止删除-Fluent API,entity-framework,.net-core,ef-fluent-api,Entity Framework,.net Core,Ef Fluent Api,类别和产品之间存在一对多关系。一个类别将有许多产品。然而,当我试图删除一个目录,如果有一个产品与该目录,我不应该被允许这样做 在我编写的代码中,它允许删除。当我删除一个目录时,它也会删除关联的产品。 我想让我的代码做的是,如果有相应的记录,防止我删除一个目录 有人能帮我解决这个问题吗 分类 public class Catergory { public int CatergoryId { get; set; } public string CatergoryName { get;

类别和产品之间存在一对多关系。一个类别将有许多产品。然而,当我试图删除一个目录,如果有一个产品与该目录,我不应该被允许这样做

在我编写的代码中,它允许删除。当我删除一个目录时,它也会删除关联的产品。 我想让我的代码做的是,如果有相应的记录,防止我删除一个目录

有人能帮我解决这个问题吗

分类

public class Catergory
{
    public int CatergoryId { get; set; }
    public string CatergoryName { get; set; }
    public string CatergoryDescription { get; set; }

    public ICollection<Product> Products { get; set; }

}
使用fluentapi映射关系

类别配置

class CatergoryConfiguration : IEntityTypeConfiguration<Catergory>
{
    public void Configure(EntityTypeBuilder<Catergory> builder)
    {
        builder.ToTable("Catergory");

        builder.HasKey(c => c.CatergoryId);

        builder.Property(c => c.CatergoryName)
            .IsRequired(true)
            .HasMaxLength(400);

        builder.Property(c => c.CatergoryDescription)
            .IsRequired(true);

    }
}
class CatergoryConfiguration:IEntityTypeConfiguration
{
公共void配置(EntityTypeBuilder)
{
建筑商:可转让(“分类”);
builder.HasKey(c=>c.CatergoryId);
builder.Property(c=>c.CatergoryName)
.IsRequired(正确)
.HasMaxLength(400);
builder.Property(c=>c.CatergoryDescription)
.IsRequired(正确);
}
}
产品配置

    public void Configure(EntityTypeBuilder<Product> builder)
    {
        builder.ToTable("Product");

        builder.HasKey(p => p.ProductID);

        builder.Property(p => p.ProductName)
            .HasMaxLength(400)
            .IsRequired(true);

        builder.Property(p => p.ProductDescription)
            .HasMaxLength(2000)
            .IsRequired(true);

        builder.HasOne(f => f.Catergory)
            .WithMany(r => r.Products)
            .HasForeignKey(f => f.CatergoryID);
            .OnDelete(DeleteBehavior.Restrict);
    }
}
public void配置(EntityTypeBuilder)
{
建造商。可转让(“产品”);
builder.HasKey(p=>p.ProductID);
builder.Property(p=>p.ProductName)
.HasMaxLength(400)
.IsRequired(正确);
builder.Property(p=>p.ProductDescription)
.HasMaxLength(2000年)
.IsRequired(正确);
builder.HasOne(f=>f.Catergory)
.有许多(r=>r.产品)
.HasForeignKey(f=>f.CatergoryID);
.OnDelete(DeleteBehavior.Restrict);
}
}

很遗憾,您无法在FluentAPI中配置此选项。
OnDelete
仅设置删除主体实体时如何处理相关实体的行为

在删除方法中,您需要包含逻辑,以在删除前检查
类别
是否有
产品

    public void Configure(EntityTypeBuilder<Product> builder)
    {
        builder.ToTable("Product");

        builder.HasKey(p => p.ProductID);

        builder.Property(p => p.ProductName)
            .HasMaxLength(400)
            .IsRequired(true);

        builder.Property(p => p.ProductDescription)
            .HasMaxLength(2000)
            .IsRequired(true);

        builder.HasOne(f => f.Catergory)
            .WithMany(r => r.Products)
            .HasForeignKey(f => f.CatergoryID);
            .OnDelete(DeleteBehavior.Restrict);
    }
}