При расчете времени выполнения нашего кода я заметил, что при каждом взаимодействии Linq с SQL Server требуется значительное время транзакции.В прошлом, когда мы использовали SQL напрямую, мы могли размещать несколько операторов и отправлять их одновременно.Есть ли способ сделать это в Linq?В частности, у меня есть две таблицы: таблица журнала и таблица UHA (userhostaddress).Если uha еще нет в таблице UHA, его необходимо вставить, а затем запись в журнале, сделанную с помощью uhaid.В Linq для этого требуется три вызова: один для проверки того, что UHA не существует, один раз для его вставки и один раз для журнала.Могу ли я сделать это за один звонок в базу данных?
var uha = db.UHAs.Where(u => u.userhostaddress == _userHostAddress).FirstOrDefault();
if (uha == null)
{
var newUha = new UHA()
{
userhostaddress = _userHostAddress
};
db.UHAs.InsertOnSubmit(newUha);
db.SubmitChanges(); // 2. Second call
uha = newUha;
}
SHA1 sha1 = SHA1.Create();
var newLog= new Log()
{
requested = DateTime.UtcNow,
uhaid = uha.uhaid,
query = _query,
queryhash = sha1.ComputeHash(Encoding.UTF8.GetBytes(_query))
};
db.Log.InsertOnSubmit(newLog);
db.SubmitChanges();