2017-01-25 3 views
2

を設定MySQLでId列を想定しDapperExtensions MySQLのINSERTは、ID

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

AUTO_INCREMENTに設定され、テーブルが空であることを示します。次に、途中でIdの値10が1に変更されます。

Dapper/DapperExtensionsを使用して正しいID 10を挿入することはできますか?

答えて

4

解決策は非常に簡単であることが判明しました。解決策は、カスタムクラスマッパーを使用していました。 somepointで(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<>); 
を追加しました