Verwenden von adrett, wie kann ich eine C# List
in Datenbank einfügen . Bisher ohne Dapper habe ich den folgenden Code verwendet, um die Listenwerte in die Datenbank einzufügen .
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
}
Ich bin mit dem Abrufen der Daten mit dapper vertraut, aber dies ist mein erster Versuch mit der Einfügeabfrage .
Ich habe den folgenden Code ausprobiert, indem ich einen Exceute
Link zur Abfrage verwendet habe, mich aber an die Schleife gehalten habe. Ich denke, mit dem Dapper-Tool ist keine Schleifenanweisung erforderlich.
connection.Execute(processQuery ... );
BEARBEITEN:
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; }
}
Bitte beraten Sie dazu. Zu Ihrer Information: Ich benutze SQL Server 2008
.
quelle
connection.Execute("INSERT INTO PROCESS_LOGS VALUES (@A, @B)", processList);
(@a1, @b1),(@a2, @b2)
mit Dapper zu simulieren ? Ich versuche SQL Server zu verwendenMERGE tble USING VALUES (('a1', 'b1'),('a2','b2')) AS foo(a,b) ON tble.a=foo.a WHEN MATCHED...
. Wenn nicht, würde ich lieber viele Anweisungen iterieren und ausführen, als eine temporäre Tabelle zu verwenden, aber Dapper, der meine Liste in Klammern erstellt, wäre sehr nett. Bin zweifelhaft, da ich denke, dass es herstellerspezifisch ist. Obwohl MySQL durch Kommas getrennte Klammern verwendet, um mehrere Zeilen einzufügen, ist dies möglicherweise nicht der Fall? (INS INTO tbl (a,b) VALUES (a1,b1),(a2,b2)
).listOfChildren.Select(childId => new { A = parentId, B = childId})
alsIch glaube, die Masseneinfügung ist besser, als die Liste zu iterieren und einzeln einzufügen.
SqlTransaction trans = connection.BeginTransaction(); connection.Execute(@" insert PROCESS_LOGS(Id, st_Time, ed_Time, td_Time) values(@Id, @st_Time, @ed_Time, @td_Time)", processList, transaction: trans); trans.Commit();
Referenz: https://stackoverflow.com/a/12609410/1136277
quelle
Verwenden Sie Dapper.Contrib https://dapper-tutorial.net/insert#example---insert-single ! Sie können mühelos eine Liste von Objekten in db einfügen.
quelle