public bool SaveValidTicketNos(string id,string[] ticketNos, string checkType, string checkMan)
{
bool result = false;
List<Carstartlistticket>enties=new List<Carstartlistticket>();
using (var context = new MiniSysDataContext())
{
try
{
foreach (var ticketNo in ticketNos)
{
Orderticket temp = context.Orderticket.ByTicketNo(ticketNo).SingleOrDefault();
if (temp != null)
{
Ticketline ticketline= temp.Ticketline;
string currencyType = temp.CurrencyType;
float personAllowance=GetPersonCountAllowance(context,ticketline, currencyType);
Carstartlistticket carstartlistticket = new Carstartlistticket()
{
CsltId = Guid.NewGuid().ToString(),
Carstartlist = new Carstartlist(){CslId = id},
LeaveDate = temp.LeaveDate,
OnPointName = temp.OnpointName,
OffPointName = temp.OffpointName,
OutTicketMan = temp.OutBy,
TicketNo = temp.TicketNo,
ChekMan = checkMan,
Type = string.IsNullOrEmpty(checkType)?(short?)null:Convert.ToInt16(checkType),
CreatedOn = DateTime.Now,
CreatedBy = checkMan,
NumbserAllowance = personAllowance
};
enties.Add(carstartlistticket);
}
}
context.BeginTransaction();
context.Carstartlistticket.InsertAllOnSubmit(enties);
context.SubmitChanges();
bool changeStateResult=ChangeTicketState(context, ticketNos,checkMan);
if(changeStateResult)
{
context.CommitTransaction();
result = true;
}
else
{
context.RollbackTransaction();
}
}
catch (Exception e)
{
LogHelper.WriteLog(string.Format("CarstartlistService.SaveValidTicketNos({0},{1},{2},{3})",id,ticketNos,checkType,checkMan),e);
context.RollbackTransaction();
}
}
return result;
}
Мой код выше. Я сомневаюсь, что этот код имеет ужасную плохую производительность. Неэффективность в точкеКак улучшить производительность выражений Linq?
Orderticket temp = context.Orderticket.ByTicketNo(ticketNo).SingleOrDefault();
, на самом деле, я получил массив строк с помощью метода аргументов, то я хочу, чтобы получить все данные по ticketNos из базы данных, здесь я использовать цикл, я знаю, что если я пишу такой код может вызвать проблемы с производительностью, и это приведет к еще одному доступу к базе данных по времени, как можно избежать этой проблемы и повысить производительность кода, например, получить все данные только при доступе к данным базы данных. Я забыл сообщить вам ORM Я использую, еп, то ОРМ PlinqO основе NHibernate
я с нетерпением жду, имеющих каждый свой ответ, спасибо
спасибо вам anwser, вы даете мне другой поезд мысли – YangShuang