2016-01-14 1 views
-1

я могу переключаться между базами данных динамически с помощью следующего кода:MVC5 Изменение базы данных и классы сущностей модели динамически

public MyEntities() : base("name=MyEntities") 
{ 
} 

Но это все еще использует старые классы модели. Я где-то читал, что классы моделей должны быть одинаковыми для переключения на разные базы данных. Но мне особенно нужно менять/перезагружать классы модели каждый раз, когда база данных изменяется.

FYI, мне нужно сделать это, потому что схема базы данных разработки продолжает меняться, в то время как Stage и Production довольно стабильны. Поскольку модели создаются с использованием базы данных разработки, они отличаются от классов Production/Stage.

+0

Есть буквально сообщения в блогах в блогах о том, как правильно генерировать модель базы данных, используя Code First или старые методологии Database First. –

+0

Не думаю, что вы поняли мой вопрос. Я знаю, как создавать классы модели. Я не могу переключаться между классами модели (когда схема отличается) от разных версий баз данных во время выполнения. – user1347295

+0

Не понимаю. Этап и производство * предполагаются * для соответствия различным версиям вашего программного обеспечения. Зачем вам когда-либо хотеть подключаться к базе данных Stage (не говоря уже о Prod) от dev? Если есть какие-либо причины для этого, вы должны использовать обновленные копии базы Stage/Prod. –

ответ

1

Короткий вариант заключается в том, что вы думаете об этом неправильно. Вы не можете просто указать свою строку соединения в БД с другой схемой: она не работает таким образом и сломает весь ваш код, если это произойдет. Вам нужно сохранить схему кода в синхронизации с вашей схемой БД. Если у вас действительно есть (скажем) три разные схемы базы данных, с которыми вам нужно поговорить одновременно, вам понадобятся три схемы кода.

Другими словами, если вы работаете над некоторым кодом, который должен работать против вашего локального DB-разработчика, который имеет другую схему, чем ваша производственная БД, вы не можете просто изменить строку подключения и указать ее на производственной БД. Он не будет работать, и он не должен.

Если вам действительно нужно запустить/написать/отладить код в производственной БД в этом сценарии, у вас должна быть ветвь «Производство» (или Мастер), которая имеет правильную схему кода, соответствующую схеме производственного БД, и переключается к этой ветке при написании такого кода (скажем, для патча или чего-то еще). Затем, когда вы отправили патч для освоения, вы можете объединить эту фиксацию обратно в свою ветку разработки и продолжить.

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