1. ホーム
  2. c#

[解決済み】Dapperでインサートとアップデートを実行する

2022-04-05 08:14:44

質問

Dapperの使用に興味があるのですが、私の知る限りでは、QueryとExecuteしかサポートしていないようです。 Dapperは、オブジェクトの挿入と更新の方法を含んでいないようです。

私たちのプロジェクト(ほとんどのプロジェクト?)では、挿入と更新を行う必要があることを考えると、ダッパーと一緒に挿入と更新を行うためのベストプラクティスは何でしょうか?

できれば、ADO.NETのパラメータ構築などの方法に頼らなくて済むようにしたいです。

現時点で思いつくベストアンサーは、挿入と更新にLinqToSQLを使用することです。 もっと良い答えがあるのでしょうか?

どのように解決するのですか?

私たちはいくつかのヘルパーを作ることを検討していますが、APIとこれがコアに入るかどうかについてはまだ決定していません。ご覧ください。 https://code.google.com/archive/p/dapper-dot-net/issues/6 をご覧ください。

その間、以下のことができます。

val = "my value";
cnn.Execute("insert into Table(val) values (@val)", new {val});

cnn.Execute("update Table set val = @val where Id = @id", new {val, id = 1});

etcetera

私のブログ記事もご覧ください。 あの悩ましいINSERT問題

更新

コメントで指摘されているように、現在、いくつかの拡張機能が Dapper.Contrib プロジェクトは、このような形で IDbConnection 拡張メソッドです。

T Get<T>(id);
IEnumerable<T> GetAll<T>();
int Insert<T>(T obj);
int Insert<T>(Enumerable<T> list);
bool Update<T>(T obj);
bool Update<T>(Enumerable<T> list);
bool Delete<T>(T obj);
bool Delete<T>(Enumerable<T> list);
bool DeleteAll<T>();