2012-02-25 2 views
6

BookId, AuthorId 등의 id 열이있는 데이터베이스가 있습니다. 그러나 코드 파일에는 Id 속성 만 있습니다. 나는 Dapper와 함께 NHibernate를 사용하는 프로그램의 일부를 변환하려고 시도하고 있으므로 Id와 BookId 속성에 대한 필요성을 없애려하고있다. Hibernate는 Book 객체의 Id 프로퍼티에 BookId를 매핑하고 마찬가지로 Author 객체의 Id 프로퍼티에 대해 AuthorId를 맵핑하는 아이덴티티 맵을 내장하고있다.다른 이름을 가진 ID 열을 Dapper와 매핑하는 방법은 무엇입니까?

sql 쿼리에서 별칭을 제공하지 않고이 Dapper를 수행하는 방법이 있습니까?

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; } 
} 

내가 좋아하는 외모를 사용하고 샘플 쿼리 단정 쉽게이 기능을 지원하지 않는 경우

select * from Books b inner join Author a on a.AuthorId = b.AuthorId 

, 어떤 생각이 다른 어떤 옵션에 내가 가지고?

+0

나는이 작업을 컬럼에 대한 별명을 사용하여 수행했습니다. 앨리어스를 왜 사용하지 않으시겠습니까? – LordHits

+0

@LordHits 나는 많은 열을 반환하기 때문에 그것을 피하려고합니다. 차라리 명시 적으로 SQL에 각각 입력하지 않아도됩니다. 또한, 테이블 조인으로 예상대로 작동 할 것이라고 나는 믿지 않는다. –

답변

15

설계 상 dapper에는 매핑 계층이 없습니다. 그 길을 한 걸음 물러서서 갑자기 우리가 갑자기 무슨 일이 일어 났는지 알기도 전에 설정 파일에 빠져들 것입니다. 그래서 : 두 가지 옵션 :

  • 는 SQL
  • 에 별칭을 추가 그래서 하나 (SQL)

는 C#에서 심 (shim)을 추가

select BookId as [Id], Name from Books 

또는 (C#을) :

private int BookId { get { return Id; } set { Id = value; } } // just for dapper 
관련 문제