2

如果我有一堂课:

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_INCREMENT 并且该表为空。然后在某处将 Id 值 10 更改为 1。

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

4

1 回答 1

5

我发现解决方案非常简单。解决方案是使用自定义类映射器。(下面代码中的 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<>);
于 2017-01-25T17:01:45.953 回答