c# - DapperExtensions MySQL INSERT 集 ID

标签 c# mysql dapper dapper-extensions

如果我有课:

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
}

我尝试使用 Dapper/DapperExtensions 将其插入到相应的 MySQL 表中:

var person = new Person { Id = 10, Name = "Bobby" };
connection.Insert(person);

假设 MySQL 中的 Id 列设置为 AUTO_INCRMENT 并且表为空。然后在途中的某个地方,Id 值 10 更改为 1。

是否可以使用 Dapper/DapperExtensions 插入正确的 ID 10?

最佳答案

我发现解决方案非常简单。解决方案是使用自定义类映射器。 (下面代码中的 EntityBase 类是我系统中所有数据库实体的基类)

public class PrimaryKeyAssignedClassMapper<T> : ClassMapper<T> where T : EntityBase
{
    public PrimaryKeyAssignedClassMapper()
    {
        base.Map(m => m.Id).Key(KeyType.Assigned);
        base.AutoMap();
    }
}

然后在调用 Insert 方法之前的某个时刻,我添加了

DapperExtensions.DapperExtensions.DefaultMapper = typeof(PrimaryKeyAssignedClassMapper<>);

关于c# - DapperExtensions MySQL INSERT 集 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41855823/

相关文章:

c# - 为什么在不使用 async/await 的情况下使用 Dapper QueryAsync<T> 时抛出 TaskCanceledException?

c# - tinyint 的精致问题

c# - 如何以编程方式从 Excel 单元格拖放到启用拖动的任务 Pane ?

mysql - 在mysql表中存储(APN)和(GCM) token

PHP int被MySQL转换为不同的字符串

php _POST查询参数失败,但硬编码文本查询成功

MySQL + Dapper 查询多个 : how to execute multiple SELECT queries at once?

c# - LINQ SQL 查询,SubmitChanges 未将更改提交到数据库

c# - 更改 callvirt 以在 IL 中调用

c# - 使用多边形注释在图表中绘制