Проверьте, существует ли значение в нескольких таблицах.

У меня есть такие таблицы в моей базе данных, как Клиент , Участник , Инструктор , Сотрудник и т. д. Каждая из этих пользователей имеет его адрес электронной почты. Мне нужно проверить, есть ли уже пользователь с данным адресом электронной почты. Я думал о следующем:

  • Проверить каждую таблицу, что-то вроде этого:
    public bool IsEmailAddressExists(string email)
    {
        if (!Context.Customers.Any(c => string.Equals(c.Email, email, StringComparison.InvariantCultureIgnoreCase)))
            if (!Context.Members.Any(m => string.Equals(m.Email, email, StringComparison.InvariantCultureIgnoreCase)))
              ...
    }
  • Выбрать все электронные письма и проверить:
    public bool IsEmailAddressExists(string email)
    {
        var emails = Context.Customers.Select(c => c.Email).Union(Context.Members.Select(m => m.Email))...; //other unions
        return emails.Any(e => string.Equals(e, email, StringComparison.InvariantCultureIgnoreCase));
    }

Есть еще таблицы и много пользователей, поэтому я хотел бы знать, какой способ будет наиболее эффективным внедрить такую ​​проверку.

Спасибо.

0
задан Zabavsky 14 June 2012 в 14:36
поделиться