mysimulation/server/FSO.Server.Database/DA/Utils/BufferedInsert.cs

32 lines
826 B
C#
Raw Permalink Normal View History

using Dapper;
using System.Collections.Generic;
using System.Data.Common;
namespace FSO.Server.Database.DA.Utils
{
public static class BufferedInsert
{
public static void ExecuteBufferedInsert(this DbConnection connection, string query, IEnumerable<object> param, int batches)
{
var buffer = new List<object>();
var enumerator = param.GetEnumerator();
while (enumerator.MoveNext())
{
buffer.Add(enumerator.Current);
if(buffer.Count >= batches)
{
connection.Execute(query, buffer);
buffer.Clear();
}
}
if(buffer.Count > 0)
{
connection.Execute(query, buffer);
}
}
}
}