1 دقیقه میانگین مدت زمان مطالعه است

بصورت پیش‌فرض خطاهای دیتابیسی از نوع DbUpdateException بازگردانده می‌شوند. اگر نیاز دارید که جزئیات خطا را متوجه شوید تا بتوانید در رابطه با آن تصمیم بگیرید می‌توانید از EntityFramework.Exceptions استفاده کنید.
بدین منظور ابتدا پکیج زیر را نصب کنید:

nuget

اکنون کافی است در OnConfiguring متود زیر را اضافه کنید:

public class MyContext : DbContext
{
    public DbSet<Product> Products { get; set; }

    protected override void OnModelCreating(ModelBuilder builder)
    {
        builder.Entity<Product>().HasIndex(u => u.Name).IsUnique();
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseExceptionProcessor();
    }
}

و یا بصورت زیر از آن استفاده کنید:

builder.Services.AddDbContextFactory<DemoContext>(options => options.UseSqlServer(config.GetConnectionString("MyConnection")).UseExceptionProcessor());

اکنون می‌توانید خطاهای زیر را در سیستم دریافت کنید:

  • ReferenceConstraintException
  • NumericOverflowException
  • MaxLengthExceededException
  • CannotInsertNullException
  • UniqueConstraintException

github