2009-11-20 4 views
7

У меня есть база данных с таблицей для активных заказов и одна для неактивных заказов. Я хотел бы моделировать это в Entity Framework как один объект под названием Orders. Мне также нужен способ определить, активен или нет заказ в этой коллекции, предпочтительно, если у объекта есть свойство статуса, которое установлено в соответствии с той таблицей, в которой оно находится. Есть ли способ сделать это с помощью Entity Framework 1. Что о в Entity Framework 4?Entity Framework сопоставляет несколько таблиц одному объекту

ответ

5

Посмотрите на наследование типа Table Per Concrete Type.
В блоге команды ADO.NET описано here.

+0

Это не похоже на то, что мне нужно. В этом примере они создали отдельный элемент DiscontinuedProducts. Я хочу использовать один объект Order, но он содержит данные из двух разных таблиц. –

+0

Попробуйте подход DefiningQuery. Напишите DefiningQuery с UNION и добавьте столбец выражения, возвращающий тип заказа. Убедитесь, что типы первичных ключей совпадают. Если вам нужна возможность изменить сущности, напишите необходимые функции изменения. Для этого вы можете использовать CommandText или написать процедуры в своей БД. – Devart

0

Если я правильно понимаю вас, как активные, так и неактивные заказы будут иметь одни и те же свойства (например: оба будут иметь десятичное «количество»), если это так, то в EF 1, я вполне уверен, что это невозможно. Я думаю, вам придется вернуться к отображению ваших объектов в объект POCO Orders.

1

Я думаю, что это то, что вы ищете: How to: Define a Model with Multiple Entity Sets per Type (Entity Framework)

«Данные модели Entity (EDM) позволяет тип объекта для включения многократным лица устанавливается в пределах одного контейнера объекта или типа сущности быть включается в совокупности сущностей в нескольких контейнерах объектов. Определение нескольких наборов сущностей для каждого типа (MEST) позволяет пользователям оптимизировать свой код, когда базы данных имеют разбиение на разделы или другие подобные сценарии, когда несколько таблиц имеют одну и ту же структуру ».

+0

Я видел эту статью раньше. Однако это не совсем то, что мне нужно. Хотя объект Customer содержит данные из таблицы CustomerWest и CustomerEast, вы не можете вернуться позже и посмотреть на клиента и определить его регион. В моем случае мне нужен способ взглянуть на Орден и сказать, активен он или нет. –

6

Вы можете создать представление в своей БД и сгенерировать сущность из этого.

0

Хороший способ сделать один объект, который имеет несколько таблиц, использовать Разделение сущностей. MSDN имеет очень простой учебник, который поможет вам пройти процесс, который очень прост, однако вам может потребоваться изменить модель данных: http://msdn.microsoft.com/en-us/data/jj715646.aspx

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