我有一个单独的实体框架配置类,例如
namespace CNC.Infrastructure.EntityConfiguration
{
public class OutletConfiguration : IEntityTypeConfiguration<Employee>
{
public void Configure(EntityTypeBuilder<Employee> builder)
{
builder.Property(e => e.Name)
.IsRequired()
.HasMaxLength(50)
.IsUnicode(false);
builder.Property(e => e.ProfileImage)
.IsRequired()
.HasMaxLength(200)
.IsUnicode(false);
builder.HasMany(e => e.Projects)
.WithOne(e => e.Employee)
.IsRequired()
.OnDelete(DeleteBehavior.Restrict);
}
}
}
我们正在使用软删除,因此我们仅在每个表上更新到{true / false}被删除
我使用的方式如下
builder.HasMany(e => e.Projects)
.WithOne(e => e.Employee)
.IsRequired()
.OnDelete(DeleteBehavior.Restrict);
对于关系,但不能使用
.WillCascadeOnDelete(false);
像l如果具有单独的配置,则无法使用此格式
modelBuilder.Entity<Project>()
.HasRequired<User>(s => s.User)
.WithMany()
.WillCascadeOnDelete(false);
却遇到此错误
在表“ **”上引入FOREIGN KEY约束“ *表名* ” 可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY 约束。无法创建约束或索引。见前 错误。
我不希望像公司一样更改数据库。我该怎么解决
编辑: 我也尝试过这个link 配置的方式是通过构造器传递builder属性。 l在问这个问题之前先搜索答案:差异很小,但无法按预期工作,因为l说我无法访问
.WillCascadeOnDelete(false);
就像将配置作为
传递给DbContext一样 protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<Employee>(new EmployeeConfiguration().Configure);
}