OP:
Я хочу создать базу данных с с кодом , используя учетные данные ,
... и:
после многих исследований я не нашел решения, и в большинстве учебных пособий используется «Надежное соединение».
В этом заключается ложь проблема с подходами, основанными на коде, при развертывании в новой базе данных с использованием указанного c имени входа - это курица и яйцо , потому что:
- база данных еще не существует
- строка подключения запрашивает явный логин
- логин еще не существует, скажем SQL
- , потому что база данных не существует
Конфигурация OP:
<connectionStrings>
<add name="CodeFirst"
connectionString="Server=.\SQLEXPRESS;Database=CodeFirst;User ID=anyuser;Password=anypassword;"
... />
</connectionStrings>
Так в чем же решение?
Использовать встроенную безопасность: это позволяет вам создать базу данных с нуля из кода. Однако любые другие логины, которые вам могут понадобиться, могут быть созданы позже. Однако, с точки зрения DB, это немного плохая практика, потому что вы должны привыкнуть иметь одну учетную запись для развертывания (с достаточным количеством прав для развертывания) и другую для общего доступа к приложению (и без прав для развертывания)
Создать регистрацию первым: это позволяет использовать указанный вами логин, однако вам, скорее всего, сначала нужно будет создать пустую базу данных с SQL до Вы можете создать логин. Первопроходцам, использующим код, может не понравиться эта идея.
Последний соответствует рекомендациям DACPA C, с которыми вы уже должны быть знакомы, начиная с работы с базой данных. Точно так же, как DACPA C не должен развертывать логины и настраивать безопасность, так и кодировать в первую очередь. В конце концов, базы данных не заботятся о том, используете ли вы сначала код или базу данных (под капотом, оба, вероятно, используют некоторую форму инкапсулированных сценариев), но ваш администратор БД может поднять бровь в зависимости от того, как безопасность
Являются ли подходы на основе баз данных лучше?
В теме не делайте этого, попробуйте вместо этого , код Первый пытается сделать все с помощью кода, и в то время как благородное занятие, возможно, не реализуется c. Некоторые вещи, такие как попытка создания логинов, возможно, невозможны, как упомянуто выше.
Между тем изменения схемы в первую очередь выполняются путем развертывания DACPAC со стороны базы данных. Аутентификация осуществляется с помощью имени входа, используемого для входа в SSMS (например), в первую очередь. Для развертывания DACPA C не требуется код, NET или другой.
DACPAC могут создавать и / или изменять параметры безопасности базы данных, включая имена входа, но обычно не одобряются.
Возможно, вы захотите переосмыслить сначала код Code-first и EF Migrations на самом деле не достигли успеха в качестве концепции в реальном мире, где вы создали такие CD-среды, как DEV; ТЕСТОВОЕ ЗАДАНИЕ; UAT и PROD.
Я вижу так много разработчиков, использующих только с кодом для развертывания в локальной базе данных . Оказавшись там, они используют различные средства для развертывания изменений на других компьютерах, включая TEST и PROD , будь то сценарии T SQL или резервное копирование базы данных.
Просто кажется быть таким большим усилием для чего-то, что даже не заканчивает гонку.