Я столкнулся с проблемой, когда мне нужно вызвать UDF в моем LINQ to SQL, а затем еще одну хранимую процедуру в этом. Вот код.
public IQueryable<DataDTO> GetLotsaData(string dataId, DateTime date, string custIDs)
{
var data = (from rs in _context.spXI_GetData(dataId, date, custIDs)
select new DataDTO
{
Time = rs.Time,
TimeZone = _context.GetTimezone(postDate, _context.GetDetailedData(rs.PKID, custIDs).FirstOrDefault().Zip),
CompletedTime = rs.Completed_Time,
});
return data.AsQueryable<DataDTO>();
}
Строка, о которой я беспокоюсь, - это та, где я вызываю UTF GetTimezone. Неэффективно ли вызывать UDF в середине запроса LINQ, а затем другую хранимую процедуру (GetDetailedData), чтобы получить единственное значение для этого UDF? Какой тип SQL это будет генерировать?
Это выглядит немного запутанным для меня, но все же лучше, чем альтернатива, которая будет являться дополнительным выбором или присоединением к моей хранимой процедуре. (Я пытаюсь избежать того, чтобы моя хранимая процедура возвращала новое поле - TimeZone - вместо этого просто возвращая его в моем DTO.) И да, я понимаю, что этого можно было бы избежать, если бы мы использовали UTC. К сожалению, я не могу это контролировать.