Excluir um campo / propriedade do banco de dados com Entity Framework 4 e Code-First
-
19-09-2019 - |
Pergunta
Eu gostaria de saber que há uma maneira para excluir alguns campos do banco de dados? Por exemplo:
public class Employee
{
public int Id { get; set; }
public string Name { get; set; }
public string FatherName { get; set; }
public bool IsMale { get; set; }
public bool IsMarried { get; set; }
public string AddressAs { get; set; }
}
Como posso excluir o domínio AddressAs do banco de dados?
Solução
Na versão atual a única maneira de excluir uma propriedade é mapear explicitamente todas as outras colunas:
builder.Entity<Employee>().MapSingleType(e => new {
e.Id,
e.Name,
e.FatherName,
e.IsMale,
e.IsMarried
});
Porque AddressAs não é referenciado que não faz parte da Entidade / banco de dados.
A equipe EF é considerando adicionando algo como isto:
builder.Entity<Employee>().Exclude(e => e.AddressAs);
Eu sugiro que você diga a deixar um comentário no blog EFDesign, solicitando esse recurso:)
Espero que isso ajude
Alex
Outras dicas
para referência futura: você pode usar anotações de dados MSDN EF - código primeiro Anotações de dados
[NotMapped]
public string AddressAs { get; set; }
Eu sei que isto é uma questão de idade, mas no caso de alguém (como eu) vem a ele de pesquisa ...
Agora é possível na estrutura de entidade 4.3 para fazer isso. Você poderia fazê-lo assim:
builder.Entity<Employee>().Ignore(e => e.AddressAs);
Também é possível adicionar a coluna que você deseja ignorar como Sombra propriedade na DbContext:
builder.Entity<Employee>().Property<string>("AddressAs");
Em seguida, você pode consultar nessa coluna assim:
context.Employees.Where(e => EF.Property<string>(e, "AddressAs") == someValue);