我有一个包含像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不容易支持,那么我对其他选项的想法是什么?
答案 0 :(得分:16)
根据设计,dapper没有映射层。在这条路上走了一步,在我们突然知道发生了什么之前,我们将淹没在配置文件中。所以:两个选择:
所以(sql):
select BookId as [Id], Name from Books
或(C#):
private int BookId { get { return Id; } set { Id = value; } } // just for dapper