Arquitectura de datos compartidos multitenant de Entity Framework: una sola columna, varias claves externas

Tengo la siguiente estructura de datos:

//property Notification
abstract class BindableBase { }
//base class for all tenant-scoped objects
abstract class TenantModelBase : BindableBase 
{ 
  int TenantId;
} 

abstract class Order : TenantModelBase 
{
   Customer Customer; //works: mapped using TenantId and CustomerId
   Product Product; //again, works with TenantId and ProductId
   string ProductId;
   string CustomerId;
}
class Customer: TenantModelBase 
{
   string CustomerId; 
}

class Product  : TenantModelBase 
{
   string ProductId;
}

class SpecialOrder : Order
{
    OtherClass OtherClass; //this fails!, see below
    string OtherClassId;
}
class SuperSpecialOrder : SpecialOrder {  }

class OtherClass  : TenantModelBase 
{
    string OtherClassId;
}

Obtuve el siguiente error:

El componente de clave foránea 'TenantId' no es una propiedad declarada en el tipo 'SpecialOrder'. Verifique que no se haya excluido explícitamente del modelo y que sea una propiedad primitiva válida.

Se produce un error al utilizar la configuración de Fluent Api:

        config.HasRequired(p => p.OtherClass)
            .WithMany(oc => oc.SpecialOrders)
            .HasForeignKey(p => new {  p.TenantId, p.OtherClassId});

Sin elOtherClass referencia enSpecialOrder Puedo crear objetos libremente sin problemas (incluyendoSpecialOrder, SuperSpecialOrder etc).

¿Alguien tiene una pista de lo que está pasando? Estoy perdido aquí :(

Editar He visto en otras preguntas que las personas eliminan TenantId de las tablas, esta no es una opción ya que las claves primarias no son únicas entre los inquilinos y queremos mantener la arquitectura de datos compartida.

Sé que la solución es tener un segundo TenantId en la clase SpecialOrder, pero esto no me parece lógico.