如何使用Dapper映射具有不同名稱的標識列?

c# dapper

我有一個像bookId,AuthorId等id列的數據庫。但是,我的代碼文件只有一個Id屬性。我正在嘗試將使用NHibernate的程序部分轉換為Dapper,所以我試圖消除對Id和BookId屬性的需要。 NHibernate有一個內置的標識映射,它將BookId映射到Book對象的Id屬性,類似AuthorId映射到Author對象的Id屬性。

有沒有辦法在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

如果Dapper不容易支持,那麼我對其他選項的想法是什麼?

一般承認的答案

根據設計,dapper沒有映射層。在這條路上走了一步,在我們突然知道發生了什麼之前,我們將淹沒在配置文件中。所以:兩個選擇:

  • 在SQL中添加別名
  • 在C#中添加一個墊片

所以要么(sql):

select BookId as [Id], Name from Books

或(C#):

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


許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因