Manejo de tenencia múltiple en MVC

Me gustaría preguntar sus opiniones sobre la forma en que manejo MultiTenancy. Estoy usando MVC3 (cambiando a MVC4) y EF como mi backend. Estoy usando una aplicación única, esquema compartido MultiTenancy. Abajo está el código:

<code>public abstract class Service<T> where T : Entity
{
    private Repository<T> _repo;
    public Service()
    {
        _repo = new Repository<T>();
    }

    public bool Authenticate(int id)
    {
        //var companyInfo = _authorizationRepository.GetApiKey(apiKey);
        int tenantId = 0; // replaced by companyInfo using repository
        var entity = _repo.GetQuery(tenantId).Where(e => e.Id == id).First();

        if (tenantId != entity.TenantId)
            throw new ArgumentException();

        return true;
    }
}

public class EmployeeService : Service<Employee>
{
    private EmployeeRepository employeeRepository;
    public EmployeeService()
    {
        employeeRepository = new EmployeeRepository();
    }

    public Employee GetEmployeeById(int employeeId)
    {
        this.Authenticate(employeeId);
        return employeeRepository.GetById(employeeId);
    }
}

public class Entity
{
    public int Id { get; set; }
    public int TenantId { get; set; }
}
</code>

Por supuesto, DI también estará allí, pero por simplicidad los quité aquí (temporalmente). Utilicé Genéricos (sintiéndome sucio al respecto) en la capa de servicio ya que tengo problemas para comparar el TenantId con la Entidad correcta que se pasará a la clase. Estoy intentando recodificar esto usando FilterAttributes pero no tengo idea de cómo hacerlo. ¿Cómo manejan ustedes su multipropiedad? ¿El diseño tiene algunos defectos cruciales que puedo encontrar a largo plazo? Si tiene algunas muestras usando FilterAttributes, eso sería de gran ayuda.

¡Gracias!

Respuestas a la pregunta(1)

Su respuesta a la pregunta