Используйте эту технику для увеличения скорости вставки записей в Entity Framework.Здесь я использую простую хранимую процедуру для вставки записей.И для выполнения этой хранимой процедуры я использую .FromSql () метод Entity Framework , который выполняет Raw SQL.
Код хранимой процедуры:
CREATE PROCEDURE TestProc
@FirstParam VARCHAR(50),
@SecondParam VARCHAR(50)
AS
Insert into SomeTable(Name, Address) values(@FirstParam, @SecondParam)
GO
Далее, циклчерез все ваши 4000 записей и добавьте код Entity Framework, который выполняет хранимую
процедуру каждый сотый цикл.
Для этого я создаю строковый запрос для выполнения этой процедуры, продолжая добавлять к нему каждый набор записей.
Затем проверьте, что цикл работает с кратными 100, и в этом случае выполните его, используя .FromSql()
.
Таким образом, для 4000 записей мне нужно выполнить процедуру только для 4000/100 = 40 раз .
Проверьте код ниже:
string execQuery = "";
var context = new MyContext();
for (int i = 0; i < 4000; i++)
{
execQuery += "EXEC TestProc @FirstParam = 'First'" + i + "'', @SecondParam = 'Second'" + i + "''";
if (i % 100 == 0)
{
context.Student.FromSql(execQuery);
execQuery = "";
}
}