مدیریت خطاها در EntityFramework
بصورت پیشفرض خطاهای دیتابیسی از نوع DbUpdateException بازگردانده میشوند. اگر نیاز دارید که جزئیات خطا را متوجه شوید تا بتوانید در رابطه با آن تصمیم بگیرید میتوانید از EntityFramework.Exceptions استفاده کنید.
بدین منظور ابتدا پکیج زیر را نصب کنید:
اکنون کافی است در 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