Entity Framework получает пары атрибут / значение - PullRequest
1 голос
/ 12 июля 2010

Я работаю с существующей базой данных, используя Entity Framework для динамического построения запросов.Это ключевой фактор здесь.Я не знаю, с какими типами объектов я буду работать до времени выполнения, так как пользователю разрешено выбирать, какие объекты / свойства ему нужны с помощью построителя запросов ... Поэтому я использую ObjectQuery<EntityObject>.

Все отлично работает.С обычными ссылками, использование комбинации .Include () и .Select () делает свое дело.Тем не менее, у меня есть несколько таблиц, которые оказываются хитрыми.В основном это таблицы свойств с парой имя / значение атрибута.

Мне нужно, чтобы эти атрибуты отображались в виде столбцов в моем результате, но я не уверен, как заставить Entity сделать это.В настоящий момент Entity может их найти, но она просто возвращает список строк атрибутов, относящихся к любому объекту, к которому я обращаюсь.

Например ...

Основная таблица:

customerid1 customerName
customerid2 customerName2

Таблица атрибутов:

1 customerid1 attribute1 value1
1 customerid1 attribute2 value2
2 customerid2 attribute2 value3

В конце мне нужно отобразить:

customer       attribute1 attribute2
------------------------------------
customername1  value1     value2
customername2             value3

Прямо сейчас я получаю нечто более похожее на:

customer      attributes
-------------------------------------
customername1 attributeitemlistobject
customername2 attributeitemlistobject

Буду признателен за любые предложения.

1 Ответ

1 голос
/ 12 июля 2010

Звучит так, будто вы хотите что-то вроде:

var q = from c in Context.Customers
        let attribute1 = c.Attributes.FirstOrDefault(a => a.Name.Equals("attribute1")
        let attribute2 = c.Attributes.FirstOrDefault(a => a.Name.Equals("attribute2")
        select new 
        {
            customer = c.Name,
            attribute1 = attribute1,
            attribute2 = attribute2
        };
...