如何使用Dapper映射具有不同名称的标识列
本文关键字:标识 Dapper 何使用 映射 | 更新日期: 2023-09-27 18:25:40
我有一个数据库,其中包含id列,如BookId、AuthorId等。然而,我的代码文件只有一个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