Como mapear uma coluna de identidade, que tem um nome diferente, com o Dapper?
Pergunta
Eu tenho um banco de dados com a identificação de colunas como BookId, AuthorId, etc.Meus arquivos de código, no entanto, só tem uma propriedade de Identificação.Eu estou tentando converter partes do programa que utilizar o NHibernate com o Dapper, então eu estou tentando eliminar a necessidade de uma Identificação e um BookId propriedade .O NHibernate foi construído em um mapa de identidade que mapeia BookId para a propriedade Id do Catálogo de objectos e, da mesma forma AuthorId para a Identificação de propriedade sobre o Autor objetos.
Existe uma maneira de fazer isso Dapper, fora de dar um alias para a coluna, a consulta sql?
public class Book {
public int Id { get; set; }
public string Name { get; set; }
}
public class Author {
public int Id { get; set; }
public string Name { get; set; }
}
Um exemplo de consulta que eu estou usando a seguinte aparência:
select * from Books b inner join Author a on a.AuthorId = b.AuthorId
Se Dapper não oferece suporte a esta facilidade, todos os pensamentos sobre o que outras opções eu tenho?
Solução
Por design, o dapper não tem uma camada de mapeamento.Um passo para baixo a estrada, e antes de saber o que aconteceu, de repente, nós vamos estar afogando-se em arquivos de configuração.Assim:duas opções:
- adicionar um alias do SQL
- adicionar um calço no C#
assim, ou (sql):
select BookId as [Id], Name from Books
ou (C#):
private int BookId { get { return Id; } set { Id = value; } } // just for dapper