1

Я пытаюсь выбрать только 2 столбца из свойств навигации, но не могу это сделать, может ли кто-нибудь сообщить мне, как я могу это достичь?Как выбрать только определенные столбцы из свойств навигации с помощью EF

Он работает хороший способ по умолчанию (выбор всех столбцов):

var productreceipts = db.productreceipts.Include(p => p.employee).Include(p => p.productmaster).Include(p => p.vendor); 

Что я хочу:

Выберите только 2 колонки образуют каждая из таблиц сотрудников, productmaster, поставщиков.

Я знаю, как выбрать, если у меня есть только одна таблица:

var productreceipt = db.productreceipts.Select(p => new { p.ReceiptId, p.ReceivedBy }); 

EDIT: Я хочу, чтобы выбрать все свойства первой таблицы (productreceipts) и только несколько выбранных из других.

Любая помощь будет очень признательна.

Заранее спасибо.

+1

'.Select (p => new {propertyName = p.productmaster.SomeProperty}' –

ответ

0

Вы можете использовать как:

var productreceipts = db.productreceipts.Include(p => p.employee). 
              .Select(p => new { propertyName = p.productmaster.SomeProperty }) 
+0

Я думаю, что нет необходимости использовать функцию '.Include()' при выполнении запроса '.Include()' function is созданный по какой-то другой особой/особой причине. Подробнее см. здесь: https://msdn.microsoft.com/en-us/library/bb738708(v=vs.110).aspx –

1

Попробуйте это:

var productreceipt = db.productreceipts 
    .Select(p => 
    new { productreceipts_prop_1 = p.productreceipts_prop_1, 
      productreceipts_prop_2 = p.productreceipts_prop_2, 
      productreceipts_prop_3 = p.productreceipts_prop_3, 
      productreceipts_prop_4 = p.productreceipts_prop_4, 

      employee_prop_1 = p.employee.employee_prop_1, 
      employee_prop_2 = p.employee.employee_prop_2, 

      productmaster_prop_1 = p.productmaster.productmaster_prop_1, 
      productmaster_prop_2 = p.productmaster.productmaster_prop_2, 

      vendor_prop_1 = p.vendor.vendor_prop_1, 
      vendor_prop_1 = p.vendor.vendor_prop_1, 
    }); 

EDIT:

Там нет необходимости использовать .Include() можно непосредственно использовать свойство навигатора извлечение данных.

+0

Прохладный этот вид хороший, но не подходит мы сокращаем его, означает, что для выбора всех свойств вручную для первой таблицы (productreceipts) – Rakesh

+0

Вы также можете это сделать, но вы получите объект класса 'productreceipts', в котором все свойства есть. –

0

Если у вас есть отложенная загрузка включен, то вы можете напрямую использовать

.Select(p => new { ProductId = p.productmaster.ProductId } 

еще вы должны принять внутреннее соединение и выбрать отдельные столбцы одного выбора.