Pierwszy post tutaj i całkiem prosty.Zachowanie projekcji Entity Framework
Szukałem upraszczania niektórych złożonych zapytań w aplikacji, którą właśnie opracowuję, i podsuwam sobie nieco głowę poniżej.
więc powiedzieć, że te dwie klasy:
Podmiot domena „EmailRecipient” (stosowany z EF kodowej pierwszy więc spodziewać się tabela SQL być generowane z tymi samymi nazwami kolumn).
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; }
}
i prosta klasa dla JSON serializacji nazwie "EmailLite" zdefiniowano jako
public class EmailLite
{
public string EmailAddress { get; set; }
public Guid Id { get; set; }
public string FriendlyName { get; set; }
}
W moim specjalistycznej EF6 (.1.3) DbContext, mam DbSet nazywa EmailRecipients.
Więc naturalnie wykonanie tego wyrażenia linq przeciwko EmailRecipients
EmailRecipients.Select(x => new EmailLite
{
Id = x.Id,
EmailAddress = x.EmailAddress,
FriendlyName = x.FriendlyName
});
wygenerowany SQL jest
SELECT
1 AS [C1],
[Extent1].[Id] AS [Id],
[Extent1].[EmailAddress] AS [EmailAddress],
[Extent1].[FriendlyName] AS [FriendlyName]
FROM [dbo].[EmailRecipients] AS [Extent1]
Więc dlaczego kiedy zrobić:
Func<EmailRecipient, EmailLite> projectionFunction = x => new EmailLite
{
Id = x.Id,
EmailAddress = x.EmailAddress,
FriendlyName = x.FriendlyName
};
EmailRecipients.Select(projectionFunction);
mogę dostać poniżej (pełna Wygenerowany przez 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]
Każda pomoc będzie najbardziej doceniana!
Cheers, Sat
Dziękuję - To musiała być prosta: Musiałem ponownie spojrzeć juuuuust trochę bliżej :) wiwaty Alexander. – sat1986