我正在尝试找出一种解决方案,以检查是否有添加行的字段会破坏不应重复的任何字段。我使用存储库模式,因此我想在存储库中创建一个方法来执行此操作。
在这个示例中,我正在尝试添加一个公司,在控制器中添加之前,它调用CompanyRespository中的此方法:
public bool Exists(Company company, bool ignoreId)
{
if (!ignoreId)
{
if (context.Companies.Any(c => c.Id == company.Id)) return true;
}
if (context.Companies.Any(c => c.TextId == company.TextId)) return true;
if (context.Companies.Any(c => c.Email == company.Email)) return true;
if (context.Companies.Any(c => c.PhoneNumber == company.PhoneNumber)) return true;
return false;
}
我遇到的问题是如何返回错误信息,以便控制器可以将错误发送到客户端。显而易见的解决方案是发送异常而不是返回true。然而,如果我只是想调用此方法来判断是否存在这些参数的公司,则不希望发送异常,我只需要在两种情况下返回布尔值。
简化的问题是:在这种情况下,创建另一个方法CheckDuplication()并返回异常而不是布尔值是否属于不良做法?如果是,那么在使用Entity Framework Core保存到数据库之前检查重复字段的正确方法是什么?