2016-09-02 1 views
1

Я читал Projections, и пока я нахожу их увлекательными, я также считаю, что они не очень прозрачны, а документация Microsoft кажется неполной.Анонимные типы, необходимые при выполнении LINQ to SQL Projections?

This article на нем Евгения Приступа отлично подходит, но все же оставляет мне вопросы.

Например, требуется ли использовать анонимный тип для формирования/проектирования? Или можно также использовать пользовательские именные типы?

Например, могут ли следующие два примера кода получить один и тот же сгенерированный SQL?

var q = ctx.CustomerAddresses.Select(x => 
     new { 
      CustomerAddress = ca, 
      ca.Customer, 
      ca.Address 
     }).Take(3); 

var w = ctx.CustomerAddresses.Select(x => 
     new CustomerAddressHelper() { 
      CustomerAddress1 = ca, 
      Customer1 = ca.Customer, 
      Address1 = ca.Address 
     }).Take(3); 

public class CustomerAddressHelper 
{ 
    public CustomerAddress CustomerAddress1; 
    public Customer Customer1; 
    public Address Address1; 
} 

ответ

1

Я всегда предпочитаю использовать строго типизированную прогнозную модель, а динамический - сгенерированный SQL будет таким же.

Что касается SQL, все, что ему нужно знать, это то, какие столбцы ему нужно вернуть, чтобы удовлетворить запрос. Если вы заполняете динамический объект или объект настраиваемого типа, это не имеет отношения к SQL-точке зрения.

Хороший/быстрый способ проверить, что SQL выполняется на самом деле, это запустить SQL Profiler, а затем посмотреть, что попадает в БД, когда результаты запроса Linq-на-SQL материализуются

 Смежные вопросы

  • Нет связанных вопросов^_^