Entidade dividindo -se apenas com código
-
21-09-2019 - |
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.
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.