Como mapear uma coluna de identidade, que tem um nome diferente, com o Dapper?

StackOverflow https://stackoverflow.com/questions/9439857

  •  12-11-2019
  •  | 
  •  

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?

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top