如果关系存在则防止删除 - 流利 API
Prevent deletion if relationship exist - Fluent API
Category 和 Product 之间存在 One to Many
关系。一个类别将有许多产品。但是,当我尝试删除一个类别时,如果有该类别的产品,我不应该被允许这样做。
在我写的代码中允许删除。当我删除一个类别时,它也会删除关联的产品。
我想让我的代码做的是,如果有相应的记录,阻止我删除一个类别。
谁能帮我解决这个问题。
类别
public class Catergory
{
public int CatergoryId { get; set; }
public string CatergoryName { get; set; }
public string CatergoryDescription { get; set; }
public ICollection<Product> Products { get; set; }
}
产品
public class Product
{
public int ProductID { get; set; }
public string ProductName { get; set; }
public string ProductDescription { get; set; }
public int CatergoryID { get; set; }
public Catergory Catergory { get; set; }
}
使用 Fluent API 映射关系
类别配置
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);
}
}
产品配置
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);
}
}
遗憾的是,您无法在 FluentAPI 中进行配置。
OnDelete
仅设置删除主体实体时如何处理相关实体的行为。
在您的删除方法中,您需要包含在删除之前检查 Category
是否有 Products
的逻辑。
Category 和 Product 之间存在 One to Many
关系。一个类别将有许多产品。但是,当我尝试删除一个类别时,如果有该类别的产品,我不应该被允许这样做。
在我写的代码中允许删除。当我删除一个类别时,它也会删除关联的产品。 我想让我的代码做的是,如果有相应的记录,阻止我删除一个类别。
谁能帮我解决这个问题。
类别
public class Catergory
{
public int CatergoryId { get; set; }
public string CatergoryName { get; set; }
public string CatergoryDescription { get; set; }
public ICollection<Product> Products { get; set; }
}
产品
public class Product
{
public int ProductID { get; set; }
public string ProductName { get; set; }
public string ProductDescription { get; set; }
public int CatergoryID { get; set; }
public Catergory Catergory { get; set; }
}
使用 Fluent API 映射关系
类别配置
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);
}
}
产品配置
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);
}
}
遗憾的是,您无法在 FluentAPI 中进行配置。
OnDelete
仅设置删除主体实体时如何处理相关实体的行为。
在您的删除方法中,您需要包含在删除之前检查 Category
是否有 Products
的逻辑。