Bài đăng đầu tiên ở đây và một bài đăng đơn giản.Hành vi chiếu Khung thực thể
Tôi đã xem xét đơn giản hóa một số truy vấn phức tạp trong một ứng dụng tôi đang phát triển và tôi đang gãi đầu một chút ở bên dưới.
Vì vậy, nói tôi có hai loại cổ phiếu này:
Một thực thể miền "EmailRecipient" (sử dụng với EF mã đầu tiên để mong đợi một bảng SQL được tạo ra với những cái tên cùng một cột).
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; }
}
và một lớp đơn giản cho JSON serialization gọi là "EmailLite" định nghĩa là
public class EmailLite
{
public string EmailAddress { get; set; }
public Guid Id { get; set; }
public string FriendlyName { get; set; }
}
Trong EF6 chuyên ngành của tôi (.1.3) DbContext, tôi có một DbSet gọi EmailRecipients.
Vì vậy, một cách tự nhiên thực hiện biểu LINQ này chống lại EmailRecipients
EmailRecipients.Select(x => new EmailLite
{
Id = x.Id,
EmailAddress = x.EmailAddress,
FriendlyName = x.FriendlyName
});
SQL được tạo ra là
SELECT
1 AS [C1],
[Extent1].[Id] AS [Id],
[Extent1].[EmailAddress] AS [EmailAddress],
[Extent1].[FriendlyName] AS [FriendlyName]
FROM [dbo].[EmailRecipients] AS [Extent1]
Vậy tại sao khi tôi làm:
Func<EmailRecipient, EmailLite> projectionFunction = x => new EmailLite
{
Id = x.Id,
EmailAddress = x.EmailAddress,
FriendlyName = x.FriendlyName
};
EmailRecipients.Select(projectionFunction);
làm tôi nhận được bên dưới (hoàn thành) SQL được tạo:
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]
Mọi trợ giúp sẽ được đánh giá cao nhất!
Chúc mừng, Sat
Cảm ơn bạn - Nó có phải đơn giản: tôi cần phải nhìn juuuuust một chút gần gũi hơn :) cổ vũ một lần nữa Alexander. – sat1986