2015-06-08 2 views
0

У меня есть таблица под названием Products и таблица ProductDescription. ProductDescription имеет первичный ключ ProductDescriptionID. Итак, чтобы получить описание продукта, мне нужно получить доступ к обеим таблицам.Entity Framework - Поиск по ID

Это мой код для доступа к описанию продукта, но я не знаю, как его исправить, поскольку я получаю: «Невозможно преобразовать лямбда-выражение в строку, потому что это не тип делегата».

 productDetailsVM.ProductDescription = db.ProductDescriptions 
      .Where(c => c.ProductDescriptionID.Any(p => p.ProductID == id)) 
      .FirstOrDefault(); 

Edit:

public partial class Product 
    {  
     public int ProductID { get; set; } 
     etc 
    } 

    public partial class ProductDescription 
    { 
     public int ProductDescriptionID { get; set; } 

     public string Description { get; set; } 
    } 

Как я на самом деле написать этот запрос?

enter image description hereenter image description here

+0

Разве вы не задали один и тот же вопрос здесь. http://stackoverflow.com/questions/30699816/how-should-i-write-this-entity-framework-query – deathismyfriend

+0

Не очень похожие, но разные проблемы, первая была решена. Кроме того, разные ошибки. – user9993

+0

Почему бы просто не начать с Продукта? Предполагая, что у вас есть свойство навигации для продукта: 'productDetailsVM.ProductDescription = db.Products.Single (p => p.ProductID == id) .ProductDescription;' – DavidG

ответ

0

Привычка это сделать?

productDetailsVM.ProductDescription = db.ProductDescriptions 
      .Where(c => c.ProductID == id) 
      .FirstOrDefault(); 
+0

«Не содержит определения для« ProductID »« – user9993

+0

Хм ... можете ли вы опубликовать модели сущностей? Ваша попытка имеет PD, имеющий ProductID ... – Mark

+0

Нужно увидеть взаимосвязь между объектами ... – Mark

2

Я предполагаю, что базы данных, вероятно, новый и до сих пор в работах, у вас есть еще определенные отношения между продуктом и ProductDescription (внешний ключ ProductID в таблице ProductDescription).

После того, как вы есть, что отношения установить и обновили свой EF диаграмму (предполагая, что вы не используете Code First), вы сможете сделать:

var productDescription = db.Product.FirstOrDefault(p=>p.ProductID == id).ProductDescription; 

Это предполагает, что продукт имеет только 1 ProductDescription.

+0

Это то, что я собирался ответить, с точки зрения терминологии свойство навигации между двумя его объектами –

0

Предположив, что вы хотите продукт иметь единое описание вы должны либо добавить ProductId поля для ProductDescription таблицы или ProductDescriptionID поля к Product таблице. Это называется Entity расщепление, вы можете найти видео этого подхода here.

Предположив, что вы хотите продукт иметь несколько описаний и описания нескольких продуктов (многие ко многим) вам нужен «Bridge Table» только с двумя полями (идентификаторы продукта и описания), соответствующие первичному ключу этой таблицы моста, таким образом, у вас будет в вашей модели отношение (многие к многим), снова есть подробное видео here..

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