小编Hel*_* me的帖子

在实体框架中无法捕获SqlException

我想在删除实体时捕获外键异常。但是EF仅引发自定义异常。我需要检查是否存在外键冲突,而无需通过EF“手动”检查所有关系。

try 
{
   applicationDbContext.SaveChanges();
   // even though debugger shows an SqlException at first, it doesnt get caught but an DBUpdateException is thrown...
   return RedirectToAction("Index");
}
catch (System.Data.SqlClient.SqlException ex)
{
   if (ex.Errors.Count > 0) 
   {
      switch (ex.Errors[0].Number)
      {
         case 547: // Foreign Key violation
                  ModelState.AddModelError("CodeInUse", "Country code could not be deleted, because it is in use");
                  return View(viewModel.First());
         default:
                  throw;      
       }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# entity-framework

5
推荐指数
1
解决办法
6081
查看次数

在 EF 中使用枚举类

我在域模型中使用基于Jimmy Bogard 的这篇文章的枚举类。但是,EF 将类视为实体并希望定义一个键。

有没有办法让 EF 存储枚举类中的值,就像使用标准 C# 枚举一样?

这就是我目前实现枚举类的方式:

public class ReservationStatus : Enumeration
{
    public static readonly ReservationStatus Outstanding = new ReservationStatus(0, "Oustanding");
    public static readonly ReservationStatus Paid = new ReservationStatus(1, "Paid");
    public static readonly ReservationStatus Canceled = new ReservationStatus(2, "Canceled");
    public static readonly ReservationStatus Rejected = new ReservationStatus(3, "Rejected");

    private ReservationStatus() { }
    private ReservationStatus(int value, string displayName) : base(value, displayName) { }
}

public class Reservation : Entity<int>
{
    public ReservationStatus Status { get; …
Run Code Online (Sandbox Code Playgroud)

c# enums entity-framework-core

4
推荐指数
1
解决办法
3137
查看次数