Arquitetura de dados compartilhados de vários proprietários do Entity Framework: coluna única, várias chaves estrangeiras

Eu tenho a seguinte estrutura de dados:

//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;
}

Estou tendo o erro a seguir:

O componente de chave estrangeira 'TenantId' não é uma propriedade declarada no tipo 'SpecialOrder'. Verifique se ele não foi explicitamente excluído do modelo e se é uma propriedade primitiva válida.

Erro ocorre usando a configuração Fluent Api:

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

Sem oOtherClass referência emSpecialOrder Eu posso criar objetos livremente sem problemas (incluindoSpecialOrder, SuperSpecialOrder etc).

Alguém tem a menor ideia do que está acontecendo? Estou perdido aqui :(

Editar Já vi em outras perguntas que as pessoas removem o TenantId das tabelas, isso não é uma opção, pois as chaves primárias não são exclusivas entre os locatários e queremos manter a arquitetura de dados compartilhada.

Eu sei que a solução é ter um segundo TenantId na classe SpecialOrder, mas isso não parece lógico para mim.

questionAnswers(2)

yourAnswerToTheQuestion