2017-01-25 171 views
2

如果我有一個類:DapperExtensions MySQL的INSERT設置ID

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

我嘗試使用小巧玲瓏/ DapperExtensions插入到相應的MySQL表如下:

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

假設在MySQL中Id列被設置爲AUTO_INCREMENT並且該表是空的。然後在某處沿着10的Id值變爲1.

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

回答

4

我發現解決方案非常簡單。解決方案是使用自定義類映射器。 (該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<>);