2012-02-25 60 views
6

我有一個像BookId,AuthorId等id列的數據庫。但是,我的代碼文件只有一個Id屬性。我試圖將使用NHibernate的程序部分轉換爲Dapper,所以我試圖消除對Id和BookId屬性的需求。 NHibernate有一個內置的身份映射,它將BookId映射到Book對象的Id屬性,同樣AuthorId映射到Author對象的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 2012-02-27 15:32:14

+0

@LordHits我試圖避免這種情況,因爲我有很多返回的列。我寧願不必在sql中明確輸出每一個。另外,我不相信它會像預期的那樣使用表連接 – 2012-02-27 15:42:32

回答

15

按設計,dapper沒有映射層。走下一步,在我們知道發生了什麼突然之前,我們會淹沒在配置文件中。所以:兩個選項:

  • 在SQL
  • 添加一個別名添加在C#

墊片所以要麼(SQL):

select BookId as [Id], Name from Books 

或(C#):

private int BookId { get { return Id; } set { Id = value; } } // just for dapper 
相關問題