Realmente Luis, tentei usar um compare no model, porem quando temos que alterar um dado daquele cliente, começa a surgir outros problemas
A ideia era
    [Required]
        [Compare("EmailBanco", ErrorMessage="Email já cadastrado")]
        [EmailAddress(ErrorMessage = "Email incorreto")]
        public string Email { get; set; }
    [NotMapped]
        public string EmailBanco {
            get {
                DContext db = new DContext();
                if(db.Usuarios.FirstOrDefault(x => x.Email == this.Email) == null)
                {
                    return Email;
                }
                else
                {
                    return "";
                }
            }
 A solução
if (db.Usuarios.FirstOrDefault(x=>x.Email == usuario.Email) != null)
            {
                ModelState.AddModelError("usuario.Email", "Email já cadastrado");
            }
e na View
 @Html.ValidationMessage("usuario.Email", new { @class = "text-danger" })