Как установить псевдоним для вложенного объекта в сценарии SQL, сгенерированном из IQueryable - PullRequest
0 голосов
/ 01 марта 2019

У меня есть IQuariable из базы данных, который я сопоставляю для просмотра модели следующим образом:

IQueryable<ItemList> itemsList = query.Select(x =>
  new ItemList()
  {
      Phone = x.Phone,
      Email = x.Email,
      Fax = x.Fax,
      State = x.StateId.HasValue ? new GenericBox() { Text = x.State.Name , Value = x.State.Id } : null,
      Type = x.Type,
      ChildItems = x.Contact.ChildItems.OrderBy(a => a.Order).Select(a => new GenericBox() { Text = a.Child.FirstName + " " + a.Child.LastName, Value = a.ChildId })
  });

Класс GenericBox выглядит следующим образом:

public class GenericBox
{
    public string Text { get; set; }

    public Guid Value { get; set; }
}

Затем я преобразую этот IQueriableна чистый SQL и выполнить его в SqlCommand.

Проблема заключается в свойствах State и ChildItems.Мне нужно установить союзников для свойств состояния Text и Value.Поскольку IQueryable устанавливает их в SQL со случайными сгенерированными именами:

SELECT 
[Project3].[Id] AS [Id1], 

[Project3].[Phone] AS [Phone], 
[Project3].[Email] AS [Email], 
[Project3].[Fax] AS [Fax], 
[Project3].[C2] AS [C2], 
[Project3].[Name1] AS [Name1], 
[Project3].[StateId] AS [StateId], 
[Project3].[Type] AS [Type], 
[Project3].[C5] AS [C3], 
[Project3].[C3] AS [C4], 
[Project3].[AgentId] AS [AgentId]

Как вы можете видеть в SELECT, Name1 для State.Text из моего класса, а C4 для ChildItem.Text.

Мне нужно в ВЫБЕРИТЕ псевдоним для столбца Имя1, например, Текст.И псевдоним для столбца C4 я хочу быть снова текст.

...