Soluciones para una aplicación web multiusuario simple con marco de entidad

Estoy desarrollando una aplicación web multiusuario (pila: MVC 4 + Entity framework 4.3). Mis requisitos son bastante simples: cada inquilino tiene la misma IU y CodeBase.

En mi base de datos tengo algunas tablas con un campo TenantId (y otras tablas sin).

He configurado un repositorio genérico muy simple:

public class GenericRepository<TEntity> where TEntity : class
{
    internal Database.CRMEntities context;
    internal DbSet<TEntity> dbSet;
    internal int tenantId;

    public GenericRepository(Database.CRMEntities context)
    {
        this.context = context;
        this.dbSet = context.Set<TEntity>();
        this.tenantId = 1;
    }

Me gustaría los métodos "obtener" para filtrar por mi tenantId. Mi método de inserción, actualización y eliminación también debe restringir el TenantId apropiado.

Mis Entidades son clases de POCO autogeneradas.

He considerado estas soluciones:

1- GenericRepository debe implementar una interfaz "ITenant" que defina TenantId. El problema es que algunas entidades no tienen la propiedad TenantId. Además, no me gusta mucho modificar la plantilla T4 que uso para generar objetos POCO para que implementen mi interfaz

2- Reflexión (pero, por supuesto, EF no puede traducirlo a una declaración SQL)

if (typeof(TEntity).GetProperty("TenantId") != null)
            query = query.Where(x => (int)   (x.GetType().GetProperty("TenantId").GetValue(x, null)) == tenantId);

¿Qué harías en mi caso? Estoy dispuesto a reconsiderar mi arquitectura si es necesario.

Gracias nicola

Respuestas a la pregunta(1)

Su respuesta a la pregunta