2017-04-13 5 views
1

は私のエンティティがデフォルトDapperのDommelでIdフィールドを挿入していないように見えますDapper Dommelにアプリケーション生成プライマリキーを挿入させるにはどうすればよいですか?

public class AppUser 
{ 
    string Id { get; set; } 
    string Name { get; set; } 
} 

であると仮定します。それはこれに非常に近いSQLが生成されます。

insert into AppUser (Name) values ("Dapper") select cast(scope_identity() as int) 

をこのSQLはそうのようなDapperのDommel挿入機能を使用して生成されます。

using (var connection = new System.Data.SqlClient.SqlConnection(ConnectionString)) 
{ 
    connection.Open(); 
    connection.Insert<AppUser>(new User { Id = "someGuid", Name = "Dapper" }); 
} 

私はそれは私が提供したId列を挿入したいと思います選択キャスト(scope_identity()as int)クエリの値で、これも実行しません。つまり、私はこのようなものを望みます

insert into AppUser (Id, Name) values ("someGuid", "Dapper") 

私はこの文書の中で見つけることができません。誰もこれを達成する方法を知っていますか?

答えて

0

私はDommelに慣れていないんだけど、あなただけの.Execute使用することができます:はい、あなたは絶対に正しいですが、それはインサート(オブジェクト)のようなメソッドを使用しているため、残念ながらそれはDommelの目的を台無しにしてしまう

_dbConnection.Execute(@"insert into AppUser (Id, Name) 
          values (@Id, @Name)", new {Id = 1, Name = "Foo"}); 
+0

を、Delete(オブジェクト)、Update(オブジェクト) - ハードコードされたSQLがないという利点があります。 –

関連する問題