Pergunta

A sua maneira de usar o Entity Framework é somente para ter uma entidade que possui campos de duas tabelas se as duas tabelas não contiverem a chave primária?

Aqui está um exemplo.

public class BlogPost
{
    public int PostID { get; set; }
    public String PostBody { get; set; }
    public int UserID { get; set; }
    public string Username { get; set; }
}

public class User
{
    public int UserID { get; set; }
    public String Username { get; set; }
}

public class BlogPostConfiguration : EntityConfiguration<BlogPost>
{
    public BlogPostConfiguration()
    {
        HasKey(b => b.PostID);
    }
}

public class UserConfiguration : EntityConfiguration<User>
{
    public UserConfiguration()
    {
        HasKey(b => b.UserID);
    }
}

Quero que a propriedade de nome de usuário do objeto BlogPost seja mapeada para a coluna de nome de usuário da tabela de usuários. Posso fazer o mapeamento usando uma chave estrangeira usando o designer, mas não tenho certeza de como fazer isso usando apenas o código. Tentei usar duas instruções de Maphierarchy no meu objeto de configuração, mas parece que isso só funciona se ambas nos tocarem a mesma chave primária.

Foi útil?

Solução

Não acho que isso seja possível com a estrutura atual do estado da entidade.

Para fazer a divisão da entidade, você precisa ter um mapeamento de 1 para 1 (a chave primária deve estar nas duas tabelas).

Eu estava incorreto com minha busca ao assumir que, porque você pode adicionar colunas de uma segunda tabela no designer, o código realmente funcionará. Recebo um erro muito semelhante ao tentar fazer o mapeamento no EDMX, como faço ao usar o código somente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top