Entity Framework 4.1 Динамически генерируемые таблицы - PullRequest
0 голосов
/ 06 сентября 2011

у меня две модели;Пользователь и Клиент.У пользователя может быть много клиентов, а у клиента - один пользователь.Менеджер проекта настаивает , чтобы клиенты каждого пользователя находились в отдельной таблице , поэтому я должен динамически генерировать новые таблицы для каждого создаваемого пользователя.Например, у пользователя ABC будет новая таблица с именем ABC_Clients, у пользователя XXX будет отдельная таблица с именем XXX_Clients и так далее.Мой вопрос: как мне это сделать с Entity Framework?Я могу просто выполнить процедуру для создания новой таблицы и выполнить ручной запрос с ExecuteStoreQuery(), но, похоже, он не возвращает отношения назад (т. Е. Отложенная загрузка), нужно ли мне строить свой запрос определенным образом или что-то в этом роде?

1 Ответ

3 голосов
/ 06 сентября 2011

Это отличный дизайн. Он будет действительно прост в использовании и очень приятен в обслуживании. Поздравь своего менеджера, скажи ему, чтобы он сделал свою работу, и пусть ты делаешь свою. Руководитель проекта не архитектор, и чаще всего это человек с плохими техническими знаниями.

Нет способа поддержать это с EF. Вы должны сделать это полностью с SQL (на самом деле это динамический SQL) и со старым ADO.NET. ExecuteStoreQuery никогда не возвращает отношения - он не может этого сделать. Ленивая загрузка не может также работать, потому что стандартная отложенная загрузка основана на статической структуре базы данных, сопоставленной с платформой Entity. Ваш объект Client не может быть отображен EF, потому что он требует, чтобы каждый объект был отображен только один раз (= в одну таблицу или набор связанных таблиц в случае наследования или разделения). Ваша сущность Client должна отображаться столько раз, сколько у вас пользователей в таблице User.

...