У меня есть конечная точка API, которая запускает и загружает около 362 файлов, эта часть работает нормально. Затем я получаю список всех файлов, которые являются Json. Я загружаю файлы в поток и десериализирую данные, затем создаю новый объект для сохранения в базе данных. Я загружаю около 10 файлов примерно на 10000 строк перед сохранением в базу данных.
Проблемы, с которыми я сталкиваюсь, заключаются в том, что после начала обработки данных время сеанса диагностики будет отставать, а через несколько секунд после 90секунды прошли в реальном времени. Не выдает никаких ошибок и не вылетает.
База данных SQL
Вот ссылка на файлы Json we.tl / t-Aa7VJ18SPf (удалить пробел)
Я попытался установить AutoDetectChangesEnabled
вfalse
но без изменений. Я удалил другой код, который я могу сделать после того, как он все еще не помог.
string dir = @"C:\Users\shawn\TestFolder\";
int p = 0;
DirectoryInfo d = new DirectoryInfo(dir);//Assuming Test is your Folder
FileInfo[] Files = d.GetFiles("*.json"); //Getting Text files
_context.ChangeTracker.AutoDetectChangesEnabled = false;
foreach (FileInfo file in Files)
{
using (StreamReader r = new StreamReader(dir + file.Name))
{
dynamic ItemObjLoop = js.Deserialize<dynamic>(r.ReadToEnd());
//r.Close();
foreach (var PartsList in ItemObjLoop.data)
{
string partidString = PartsList.id.ToString();
string typeString = PartsList.type.ToString();
string product_nameString = PartsList.attributes["product_name"].ToString();
string part_numberString = PartsList.attributes["part_number"].ToString();
string mfr_part_numberString = PartsList.attributes["mfr_part_number"].ToString();
string part_descriptionString = PartsList.attributes["part_description"].ToString();
string categoryString = PartsList.attributes["category"].ToString();
string subcategoryString = PartsList.attributes["subcategory"].ToString();
string brandString = PartsList.attributes["brand"].ToString();
string price_group_idString = PartsList.attributes["price_group_id"].ToString();
string price_groupString = PartsList.attributes["price_group"].ToString();
string activeString = PartsList.attributes["active"].ToString();
string regular_stockString = PartsList.attributes["regular_stock"].ToString();
string dropship_controller_idString = PartsList.attributes["dropship_controller_id"].ToString();
string air_freight_prohibitedString = PartsList.attributes["air_freight_prohibited"].ToString();
string not_carb_approvedString = PartsList.attributes["not_carb_approved"].ToString();
string ltl_freight_requiredString = PartsList.attributes["ltl_freight_required"].ToString();
string prop_65String = PartsList.attributes["prop_65"].ToString();
string epaString = PartsList.attributes["epa"].ToString();
string thumbnailString = "";
try
{
thumbnailString = PartsList.attributes.thumbnail.ToString();
}
catch
{
thumbnailString = "placeholder";
}
string barcodeString = "";
try
{
barcodeString = PartsList.attributes.barcode.ToString();
}
catch
{
barcodeString = "nobarcode";
}
Parts Part = new Parts()
{
partid = partidString,
type = typeString,
product_name = product_nameString,
part_number = part_numberString,
mfr_part_number = mfr_part_numberString,
part_description = part_descriptionString,
category = categoryString,
subcategory = subcategoryString,
brand = brandString,
price_group_id = price_group_idString,
price_group = price_groupString,
active = activeString,
regular_stock = regular_stockString,
dropship_controller_id = dropship_controller_idString,
air_freight_prohibited = air_freight_prohibitedString,
not_carb_approved = not_carb_approvedString,
ltl_freight_required = ltl_freight_requiredString,
prop_65 = prop_65String,
epa = epaString,
thumbnail = thumbnailString,
barcode = barcodeString,
};
_context.Parts.Add(Part);
p = p + 1;
}
if (p == 10)
{
p = 0;
_context.SaveChanges();
System.GC.Collect();
}
}
_context.SaveChanges();
}
Он должен работать без зависания и отставания и вставлять все строки вокруг 362 000 строк.