2017-01-25 9 views
2

Если у меня есть класс:DapperExtensions MySQL INSERT установить ID

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

И я стараюсь, чтобы вставить это в соответствующую таблицу MySQL, используя Dapper/DapperExtensions:

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

Если предположить столбец Id в MySQL установлено значение AUTO_INCREMENT и что таблица пуста. Затем где-то по пути значение Id 10 изменяется на 1.

Возможно ли, используя Dapper/DapperExtensions, вставить правильный идентификатор 10?

ответ

4

Я выяснил, что решение было очень простым. В решении использовалась пользовательская classmapper. (Класс EntityBase, в коде ниже, является базовым классом для всех объектов базы данных в моей системе)

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

А потом в somepoint перед вызовом метода Insert, я добавил

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