Хранение атрибутов / категорий сортировки для каждого профиля - PullRequest
1 голос
/ 25 февраля 2011

Я пытаюсь понять, как сохранить сортировку на двух уровнях.Моя проблема заключается в следующем:

У меня есть таблица с профилями.Каждый профиль имеет несколько атрибутов, связанных с ним.Атрибуты распределяются между профилями (многие-ко-многим).Каждый атрибут принадлежит категории.

К сожалению, я не могу опубликовать изображение своей модели, мне нужно еще 9 очков репутации ...

Я хочу сгруппировать атрибуты по категориям идля каждого профиля сохраните порядок категорий и атрибутов.

Пример:

Платформа: Windows Mac

Роль: Архитектор Разработчик Руководитель проекта

Поэтому здесь я хотел бы иметь возможность, например, изменить порядок платформ или показать «роль» перед «Платформой».

Я думал о добавлении отдельной таблицы и просто сохранениимассив CategoryID: s и AttributeID: s для каждого профиля .. Но мне интересно, есть ли лучший способ ...

Ответы [ 2 ]

1 голос
/ 10 марта 2011

Хорошо, давайте попробуем еще раз:)

Полагаю, вы имеете в виду, что пытаетесь сохранить порядок сущностей в отношениях «многие ко многим»?

Если так, то кажетсяэто невозможно при стандартном соединении EF «многие ко многим».Вместо этого вам нужно будет добавить дополнительный объект в середине, который хранит последовательность.Это не элегантно, но, вероятно, это единственный выход.

Вот некоторая информация от Роуэн Миллер @ MS:

В EF истинно много ко многим (т.е. без сущности соединения) не может содержать никакой полезной нагрузки, а содержимое не упорядочено.

Добавление объекта объединения - лучший способ достичь того, чего вы хотите.

Источник: http://social.msdn.microsoft.com/Forums/en/adonetefx/thread/6fe9f4fc-9979-4885-ad15-8c5ddebb45b1

0 голосов
/ 05 марта 2011

Вы имеете в виду, что хотите упорядочить дочерние объекты внутри каждого объекта?

Если это так, то здесь может помочь небольшая информация (хотя это выглядит неприятно):

http://weblogs.asp.net/zeeshanhirani/archive/2008/07/28/sorting-child-collections-in-entity-framework.aspx

Ранее я писал в блоге, где обсуждал, как использовать метод AssociateWith в DataLoadOptions для сортировки дочерних коллекций на сервере SQL перед их загрузкой в ​​память.Эта опция доступна только в linq to SQL.В каркасе сущностей для выполнения сортировки дочерней коллекции необходимо использовать метод CreateSourceQuery.CreateSourceQuery возвращает объектный запрос, который преобразуется в SQL и отправляется в базу данных.Поэтому, если вы хотите, чтобы ваши дочерние коллекции загружались по-разному, например, сортировались в другом порядке или применялись фильтры, вам нужно получить доступ к экземпляру ObjectQuery, который отвечает за загрузку дочерних вложенных коллекций, и изменить запрос, чтобы добавить порядок до выполнения ObjectQuery,Метод запроса CreateSourceQuery доступен в EntityCollection и EntityReference.

Ниже приведен пример, показывающий, как это сделать

var context = new NorthwindEntities();
var cus1 = context.Customers.Single(c => c.CustomerID == "ALFKI");
foreach (var order in cus1.Orders.CreateSourceQuery().OrderBy(o => o.ShipCity)
{
       Console.WriteLine(order.ShipCity);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...