[解決済み] Dapper.NETを使用してC#のリストをデータベースに挿入する方法
2023-01-12 11:46:34
質問
使用方法
ダッパー
を挿入するには、どのようにすればよいのでしょうか?
C# List
をデータベースに挿入することができます。 以前は
ダッパー
を使用していましたが、以下のコードで
データベースにリストの値を挿入する
.
try
{
connection.Open();
for (int i = 0; i < processList.Count; i++)
{
string processQuery = "INSERT INTO PROCESS_LOGS VALUES (@Id, @st_Time, @ed_Time, @td_Time)";
command = new SqlCommand(processQuery, connection);
command.Parameters.Add("Id", SqlDbType.Int).Value = processList[i].ID;
command.Parameters.Add("st_Time", SqlDbType.DateTime).Value = processList[i].ST_TIME;
command.Parameters.Add("ed_Time", SqlDbType.DateTime).Value = processList[i].ED_TIME;
command.Parameters.Add("td_Time", SqlDbType.DateTime2).Value = processList[i].TD_TIME;
dataReader.Close();
dataReader = command.ExecuteReader();
}
connection.Close();
}
catch (SqlException ex)
{
//--Handle Exception
}
を使ってデータを取得することはよく知られています。 ダッパー を使うことは知っていますが、今回初めて インサートクエリ .
私は以下のコードを試してみました。
Exceute
を使ってみたのですが、ループしてしまいました。
connection.Execute(processQuery ... );
EDITです。
class ProcessLog
{
public int ID { get; set; }
public DateTime ST_TIME { get; set; }
public DateTime ED_TIME { get; set; }
public DateTime TD_TIME { get; set; }
public string frequency { get; set; }
}
アドバイスをお願いします。
ご参考までに。
私が使っているのは
SQL Server 2008
.
どのように解決するのですか?
少し違う方法でやる必要があります。Dapperでは、プロパティ名やフィールド名がSQLのパラメータと同じであるという規約でマッチングします。ですから、仮にあなたが
MyObject
:
public class MyObject
{
public int A { get; set; }
public string B { get; set; }
}
また、仮に
processList = List<MyObject>
とすると、次のようになります。
foreach (var item in processList)
{
string processQuery = "INSERT INTO PROCESS_LOGS VALUES (@A, @B)";
connection.Execute(processQuery, item);
}
なお
MyObject
プロパティ名AおよびBがSQLのパラメータ名@Aおよび@Bと一致していることに注意してください。
オブジェクトの名前を変えたくない場合は、具象型の代わりに匿名型を使用してマッピングを行うことができます。
foreach (var item in processList)
{
string processQuery = "INSERT INTO PROCESS_LOGS VALUES (@A, @B)";
connection.Execute(processQuery, new { A = item.A, B = item.B });
}
EDITです。
Marc Gravellのコメントにより、Dapperにループをさせることも可能です。
string processQuery = "INSERT INTO PROCESS_LOGS VALUES (@A, @B)";
connection.Execute(processQuery, processList);
関連
-
[解決済み] UnityでOnCollisionEnterが呼ばれない
-
[解決済み] enumを列挙するには
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] 辞書を繰り返し使用するには?
-
[解決済み] usingディレクティブはネームスペースの内側と外側のどちらを使うべきですか?
-
[解決済み] 乱数(int)を生成する方法を教えてください。
-
[解決済み] データベース内の全テーブルのサイズを取得する
-
[解決済み] TSQLを使用してデータベース内のすべてのテーブルのリストを取得するにはどうすればよいですか?
-
[解決済み] SQL ServerでINNER JOINを使用して削除するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】GDI+、JPEG画像をMemoryStreamに変換する際にジェネリックエラーが発生しました。
-
[解決済み】C#におけるtypedefの等価性
-
[解決済み] 保護レベルによりアクセス不能になりました。
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み】C# - パスに不正な文字がある場合
-
[解決済み] UnityでOnCollisionEnterが呼ばれない
-
[解決済み】ランダムなブーリアンを生成する最速の方法
-
[解決済み】WSACancelBlockingCallの例外について
-
[解決済み】Linq 構文 - 複数列の選択