Entity Framework: добавление свойств / объектов во время выполнения - PullRequest
7 голосов
/ 25 января 2009

Я хочу использовать структуру сущностей. Однако у меня также есть требование разрешить моим пользователям определять настраиваемые поля в нашей системе. Я хотел бы по-прежнему использовать структуру сущностей и не использовать частичный класс со свойством хеш-таблицы.

Ниже приведено решение, о котором я думал, однако оно не простое, поэтому я хотел бы посмотреть, есть ли лучший способ.

В настоящее время моя идея состоит в том, чтобы иметь объект ModelManager, который бы создавал столбец в соответствующей таблице, изменял файлы EDM и компилировал файлы с помощью edmgen.exe. Все это должно происходить в другом процессе и / или домене приложения, чем в приложении, поскольку приложение будет ссылаться на полученную сборку. Когда приложение перезапустится, оно получит доступ к вновь добавленному полю.

Это единственный способ сделать это с помощью Entity Framework? Спасибо за ваше время.

Ответы [ 3 ]

1 голос
/ 28 января 2009

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

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

Я просто выбрасываю это туда ...

Вы можете использовать методы расширения и / или частичный класс, чтобы позволить объектам принимать словарь пар ключ / значение для данных пользовательских полей. Затем после события сохранения вы можете вставить / обновить эти данные, используя прямой SQL.

0 голосов
/ 25 января 2009

В конечном итоге вы потратите больше времени, пытаясь заставить это решение работать, чем завершить весь ваш проект с использованием HashTables. Я не думаю, что структура сущностей подходит для этой ситуации, потому что,

  1. ваш код не будет запрограммирован на использование новых сгенерированных полей
  2. вам придётся иметь дело с выгрузкой текущей сборки из домена приложения и перезагрузкой новой
  3. вы действительно настраиваете себя на неудачу

Извините, но есть только некоторые проблемы, которые нелегко применить к определенным фреймворкам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...