Удалите новое повторяющееся значение, основанное на двух столбцах .Чистое ядро
У меня есть огромная таблица транзакций в базе данных azure, куда мы импортируем файлы с +1 миллионом объектов.
public class Transaction { [Key] public int Id { get; set; } public int TransactionId { get; set; } public DateTime Date { get; set; } public decimal Price { get; set; } public int UserId { get; set; } public string Product { get; set; } public int ClientId { get; set; } public int Uploaed { get; set; } public string UniqueId { get; set; } public string Custom1 { get; set; } public string Custom2 { get; set; } public string Custom3{ get; set; } }
после импорта всех новых данных я беру все новые идентификаторы транзакций и беру все идентификаторы транзакций для этого клиента из базы данных.
Что я уже пробовал:
// ids from import string transactionsString = string.Join(",", transactionIdsCsv); var result = await _transactionsDataRepository.GetByTransactionIdsAndClientId(transactionIdsCsv.ToArray(), clientId); // ids from repository string transactionsDBString = string.Join(",", result.ToList()); // remove rows in db where duplicate transactions ids and clientId=ClientId
но я изо всех сил пытаюсь найти наиболее эффективный способ. Я хотел сделать что-то вроде удалить из сделок, где ИД транзакции в (transactionsDBString) и идентификатора ClientID = параметр ClientID ` но что бы удалить оба значения, и я хочу, только новое значение, которое будет удалено (и старое значение, чтобы остаться)
но будет ли это хорошим способом? даже выборка `var result = await _transactionsDataRepository... - это может занять много времени, так как там миллионы строк.