Первое сообщение здесь и довольно простое.Поведение проекции структуры Entity Framework
Я изучал упрощение некоторых сложных запросов в приложении, которое я разрабатываю, и я немного почесываю голову ниже.
Так что у меня есть эти два класса:
Доменное объект «EmailRecipient» (используется с EF-код первого поэтому ожидать таблицы SQL, которые будут созданы с теми же именами столбцов).
public class EmailRecipient
{
public Guid Id { get; set; }
public string FriendlyName { get; set; }
public string ExchangeName { get; set; }
public string Surname { get; set; }
public string Forename { get; set; }
public string EmailAddress { get; set; }
public string JobTitle { get; set; }
public virtual List<SentEmail> SentEmails { get; set; }
}
и простой класс для сериализации JSON под названием "EmailLite" определяется как
public class EmailLite
{
public string EmailAddress { get; set; }
public Guid Id { get; set; }
public string FriendlyName { get; set; }
}
В моем специализированном EF6 (.1.3) DbContext, у меня есть DbSet называется EmailRecipients.
Поэтому, естественно, выполняя это выражение Linq против EmailRecipients
EmailRecipients.Select(x => new EmailLite
{
Id = x.Id,
EmailAddress = x.EmailAddress,
FriendlyName = x.FriendlyName
});
сгенерированный SQL является
SELECT
1 AS [C1],
[Extent1].[Id] AS [Id],
[Extent1].[EmailAddress] AS [EmailAddress],
[Extent1].[FriendlyName] AS [FriendlyName]
FROM [dbo].[EmailRecipients] AS [Extent1]
Так почему, когда я делаю:
Func<EmailRecipient, EmailLite> projectionFunction = x => new EmailLite
{
Id = x.Id,
EmailAddress = x.EmailAddress,
FriendlyName = x.FriendlyName
};
EmailRecipients.Select(projectionFunction);
я получаю ниже (полный) Сгенерировано SQL:
SELECT
[Extent1].[Id] AS [Id],
[Extent1].[FriendlyName] AS [FriendlyName],
[Extent1].[ExchangeName] AS [ExchangeName],
[Extent1].[Surname] AS [Surname],
[Extent1].[Forename] AS [Forename],
[Extent1].[EmailAddress] AS [EmailAddress],
[Extent1].[JobTitle] AS [JobTitle],
[Extent1].[SubscribedOn] AS [SubscribedOn]
FROM [dbo].[EmailRecipients] AS [Extent1]
Любая помощь была бы очень признательна!
Приветствия, сб
Спасибо - Это должно было быть просто: мне нужно, чтобы выглядеть juuuuust немного ближе :) ура снова Александр. – sat1986