Условия - если эта запись уже существует, если адрес электронной почты в этой записи является действительным или находится в другой таблице.я зацикливаю данные из таблицы Excel, загружая их и зацикливая в записях, мой код работает хорошо и сохраняет в базе данных, но проблема в том, что на завершение работы уходит много времени, как 4 дня, для сравнения и сохранения записей в 200 000 ... янужен лучший способ
var Email = dt.Rows[j][3].ToString();
List<AllBounced> bounce = cnx.AllBounceds.Where(x => x.Email == Email).ToList();
List<MainField> mainfield = cnx.MainFields.Where(x => x.Email == data.Email).ToList();
List<MainField> mainfield2 = cnx.MainFields.Where(x => x.Phone == data.Phone || x.Mobile == data.Mobile).ToList();
if (data.Email != null)
{
if (IsEmailValid(Email) == true)
{
if (mainfield.Count != 0)
{
MainFieldsDuplicate data2 = new MainFieldsDuplicate
{
Id = Guid.NewGuid(),
FirstName = dt.Rows[j][0].ToString(),
MiddleName = dt.Rows[j][1].ToString(),
LastName = dt.Rows[j][2].ToString(),
Email = dt.Rows[j][3].ToString(),
Phone = dt.Rows[j][4].ToString(),
Mobile = dt.Rows[j][5].ToString(),
a= dt.Rows[j][6].ToString(),
b= dt.Rows[j][7].ToString(),
c= dt.Rows[j][8].ToString(),
d= dt.Rows[j][9].ToString(),
e= dt.Rows[j][11].ToString(),
f= dt.Rows[j][12].ToString(),
j= dt.Rows[j][14].ToString(),
isDeleted = 0,
h= dt.Rows[j][13].ToString(),
Date = GetDateTime(dt.Rows[j][10].ToString()),
};
cnx.MainFieldsDuplicates.Add(data2);
cnx.SaveChanges();
}
else
{
if (bounce.Count != 0)
{
data.isBounce = true;
}
else
{
data.isBounce = false;
}
data.isValid = true;
cnx.MainFields.Add(data);
cnx.SaveChanges();
}
}
else
{
if (mainfield.Count != 0)
{
MainFieldsDuplicate data2 = new MainFieldsDuplicate
{
Id = Guid.NewGuid(),
FirstName = dt.Rows[j][0].ToString(),
MiddleName = dt.Rows[j][1].ToString(),
LastName = dt.Rows[j][2].ToString(),
Email = dt.Rows[j][3].ToString(),
Phone = dt.Rows[j][4].ToString(),
Mobile = dt.Rows[j][5].ToString(),
a= dt.Rows[j][6].ToString(),
b= dt.Rows[j][7].ToString(),
c= dt.Rows[j][8].ToString(),
d= dt.Rows[j][9].ToString(),
e = dt.Rows[j][11].ToString(),
f= dt.Rows[j][12].ToString(),
j= dt.Rows[j][14].ToString(),
isDeleted = 0,
h = dt.Rows[j][13].ToString(),
Date = GetDateTime(dt.Rows[j][10].ToString())
};
cnx.MainFieldsDuplicates.Add(data2);
cnx.SaveChanges();
}
else
{
if (bounce.Count != 0)
{
data.isBounce = true;
}
else
{
data.isBounce = false;
}
data.isValid = false;
cnx.MainFields.Add(data);
cnx.SaveChanges();
}
}
}
else
{
if (mainfield2.Count != 0)
{
MainFieldsDuplicate data3 = new MainFieldsDuplicate
{
Id = Guid.NewGuid(),
FirstName = dt.Rows[j][0].ToString(),
MiddleName = dt.Rows[j][1].ToString(),
LastName = dt.Rows[j][2].ToString(),
Email = dt.Rows[j][3].ToString(),
Phone = dt.Rows[j][4].ToString(),
Mobile = dt.Rows[j][5].ToString(),
a= dt.Rows[j][6].ToString(),
b= dt.Rows[j][7].ToString(),
c= dt.Rows[j][8].ToString(),
d= dt.Rows[j][9].ToString(),
e= dt.Rows[j][11].ToString(),
f= dt.Rows[j][12].ToString(),
j= dt.Rows[j][14].ToString(),
isDeleted = 0,
h= dt.Rows[j][13].ToString(),
Date = GetDateTime(dt.Rows[j][10].ToString())
};
cnx.MainFieldsDuplicates.Add(data3);
cnx.SaveChanges();
}
else
{
cnx.MainFields.Add(data);
cnx.SaveChanges();
}