DapperExtensions MySQL INSERT集ID

时间:2017-01-25 15:46:55

标签: 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_INCREMENT并且表是空的。然后沿途的某处将Id值10改为1.

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

1 个答案:

答案 0 :(得分: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<>);