Validación del modelo MVC de la base de datos

Tengo un modelo muy simple, que necesita ser validado desde la base de datos

public class UserAddress
{
    public string CityCode {get;set;}
}

CityCode puede tener valores que solo están disponibles en mi tabla de base de datos.

Sé que puedo hacer algo así.

[HttpPost]
public ActionResult Address(UserAddress model)
{
    var connection = ; // create connection
    var cityRepository = new CityRepository(connection);

    if (!cityRepository.IsValidCityCode(model.CityCode))
    {
        // Added Model error
    }
}

Esto parece muyWET ya que tengo que usar este modelo en muchos lugares y agregar la misma lógica en cada lugar parece que no estoy usando MVC Architecture correctamente.

Entonces, ¿cuál es el mejor patrón para validar el modelo de la base de datos?

NOTA: La mayor parte de la validación es búsqueda de campo único de la base de datos, otra validación puede incluir una combinación de campo. Pero en este momento estoy contento con la validación de búsqueda de campo único, siempre que seaDRY y no está usando demasiada reflexión, es aceptable.

SIN VALIDACIÓN LATERAL DEL CLIENTE: Para cualquier persona que responda en términos de validación del lado del cliente, no necesito dicha validación, la mayoría de mis validaciones son del lado del servidor, y necesito lo mismo, no responda con los métodos de Validación del lado del cliente.

PD Si alguien me puede dar una pista sobre cómo hacer una validación basada en atributos desde la base de datos, será extremadamente agradecido.

Respuestas a la pregunta(8)

Su respuesta a la pregunta