有没有办法使用dapper-dot-net使用属性来指定应该使用的列名,而不是属性名?

public class Code
{
    public int Id { get; set; }
    public string Type { get; set; }
    // This is called code in the table.
    public string Value { get; set; }
    public string Description { get; set; }
}

我希望能够给我的物业命名,无论我 Select 什么.我们的数据库没有一致的命名约定.

如果没有Dapper,有没有其他类似的 Select ?

推荐答案

你也可以查看Dapper-Extensions个.

Dapper扩展是一个小型库,它通过添加 您的POCOS的基本CRUD操作(GET、INSERT、UPDATE、DELETE).

它有一个auto class mapper,您可以在其中指定自定义字段映射.例如:

public class CodeCustomMapper : ClassMapper<Code>
{
    public CodeCustomMapper()
    {
        base.Table("Codes");
        Map(f => f.Id).Key(KeyType.Identity);
        Map(f => f.Type).Column("Type");
        Map(f => f.Value).Column("Code");
        Map(f => f.Description).Column("Foo");
    }
}

然后你只要做:

using (SqlConnection cn = new SqlConnection(_connectionString))
{
    cn.Open();
    var code= new Code{ Type = "Foo", Value = "Bar" };
    int id = cn.Insert(code);
    cn.Close();
}

请记住,您必须将自定义 map 与POCO类保存在同一程序集中.该库使用反射来查找自定义映射,并且它只扫描一个程序集.

Update:

现在可以使用SetMappingAssembly注册要扫描的程序集列表:

DapperExtensions.SetMappingAssemblies(new[] { typeof(MyCustomClassMapper).Assembly });

Database相关问答推荐

如何在维护数据库模型的同时从Firestore中删除文档?

Metasploit 数据库警告

MySQL FIND_IN_SET 的对面

MYSQL CASE 语句多条件

在 MS SQL 中使用 GUID 作为主键是不是一个坏主意?

nvarchar (50) 与 nvarchar (max) 的含义

如何在大型数据库中使用 typeahead.js

MySQL 数据库中列名中的连字符

删除 PHP 中的所有小数

Grails 中的 SQL/数据库视图

在 Firestore 中使用嵌套的单个查询

如何将 DECIMAL 插入 MySQL 数据库

Django Atomic Transaction 是否锁定数据库?

如何将sqlite表从磁盘数据库复制到python中的内存数据库?

如何以 SYS 身份在 Java 中连接到 Oracle?

在 MYSQL 的子查询中使用 LIMIT 关键字的替代方法

Phonegap 离线数据库

包含 8000 万条记录并添加索引的表需要超过 18 小时(或永远)!怎么办?

使用 oracle sql developer 从一个数据库复制到另一个数据库 - 连接失败

从 SQLAlchemy 中的文件执行 SQL