Entidade dividida quando a coluna-chave tem nomes diferentes?

Estou usando o Entity Framework 4.3.1 Code-First e preciso dividir uma entidade entre duas tabelas. As tabelas têm uma chave primária compartilhada e é 1 para 1, mas as colunas não têm o mesmo nome em cada tabel

Não controlo o layout dos dados, nem posso solicitar alteraçõe

Então, por exemplo, as tabelas SQL podem ser

E essa seria minha entidade ...

public class MyEntity
{
    public int Id {get; set;}
    public string Name {get;set}
    public string FromAnotherTable {get;set;}
}

E aqui está o mapeamento que tenho.

public class MyEntityMapping : EntityTypeConfiguration<MyEntity>
{
    public MyEntityMapping()
    {
        this.Property(e => e.Id).HasColumnName("ThePrimaryKeyId");
        this.Property(e => e.Name).HasColumnName("MyDatabaseName");
        this.Property(e => e.FromAnothertable).HasColumnName("AnotherTableColumn");
        this.Map(m =>
            {
                m.Properties(e =>
                     {
                         e.Id,
                         e.Name
                     });
                m.ToTable("MainTable");
            });
        this.Map(m =>
            {
                m.Properties(e =>
                     {
                         e.Id,
                         e.FromAnotherTable
                     });
                m.ToTable("ExtendedTable");
            });
}

Como a chave compartilhada entre eles tem um nome de coluna diferente, não sei como mapeá-lo. Esse mapeamento será compilado, mas falhará em tempo de execução porque o EF emite SQL procurando a coluna "ThePrimaryKeyId" na tabela "ExtendedTable", que não existe.

EDITA Para esclarecer, o que eu defini acima pode (e faz) funcionar se o PK na "ExtendedTable" seguisse as convenções de nomenclatura. Mas isso não acontece e não posso alterar o esquema.

Basicamente, o que eu preciso da EF para emitir é uma instrução SQL como

SELECT
    [e1].*,   /*yes, wildcards are bad. doing it here for brevity*/
    [e2].*
FROM [MainTable] AS [e1]
INNER JOIN [ExtendedTable] AS [e2]  /*Could be left join, don't care. */
    ON  [e1].[ThePrimaryKeyId] = [e2].[NotTheSameName]

Mas a única coisa que parece querer emitir é

 SELECT
        [e1].*,
        [e2].*
    FROM [MainTable] AS [e1]
    INNER JOIN [ExtendedTable] AS [e2]
        ON  [e1].[ThePrimaryKeyId] = [e2].[ThePrimaryKeyId] /* this column doesn't exist */

Edita Tentei a abordagem 1 para 1 novamente, por sugestão da NSGaga. Não funcionou, mas aqui estão os resultados. Entidade

public class MyEntity
{
    public int Id { get; set; }
    public int Name { get; set; }
    public virtual ExtEntity ExtendedProperties { get; set; }
}
public class ExtEntity
{
    public int Id { get; set; }
    public string AnotherTableColumn { get; set; }
    public virtual MyEntity MainEntry { get; set; }
}

Aqui estão as classes de mapeamento

public class MyEntityMapping : EntityTypeConfiguration<MyEntity>
{
    public MyEntityMapping()
    {
        this.Property(e => e.Id).HasColumnName("ThePrimaryKeyId");
        this.Property(e => e.Name).HasColumnName("MyDatabaseName");
        this.ToTable("MainTable");
        this.HasKey(e => e.Id);
        this.HasRequired(e => e.ExtendedProperties).WithRequiredPrincipal(f => f.MainEntry);
    }
}

public class ExtEntityMapping : EntityTypeConfiguration<ExtEntity>
{
    public ExtEntityMapping()
    {
        this.Property(e => e.Id).HasColumnName("NotTheSameName");
        this.Property(e => e.AnotherTableColumn).HasColumnName("AnotherTableColumn");
        this.ToTable("ExtendedTable");
        this.HasKey(e => e.Id);
        this.HasRequired(e => e.MainEntry).WithRequiredDependent(f => f.ExtendedProperties);
    }
}

Esta configuração recebe a mensagem

"Column or attribute 'MyEntity_ThePrimaryKeyId' is not defined in 'ExtendedTable'"

Alterar a linha final do mapa para

this.HasRequired(e => e.MainEntry).WithRequiredDependent(f => f.ExtendedProperties).Map(m => M.MapKey("NotTheSameName"));

Retorna esta mensagem

"Each property name in a type must be unique. property name 'NotTheSameName' was already defined."

Alterando a chave mapeada para usar a coluna da tabela pai,MapKey("ThePrimaryKeyId"). retorna esta mensagem

"Column or attribute 'ThePrimaryKeyId' is not defined in 'ExtendedTable'"

Removendo oId propriedade doExtEntity class gera um erro porque a entidade não possui uma chave definid

questionAnswers(16)

yourAnswerToTheQuestion