David_Wimbley
Следующие комментарии - это то, что я видел в своем опыте.
Цитата:
Я сделал свои классы моделей и класс AppContext для базы данных, но моя база данных была создана только тогда, когда я сделал миграцию,
Ваша база данных создается, когда вы предпринимаете действие против БД. Например, простой запуск приложения не создаст базу данных, но если вы зарегистрируете пользователя в базе данных (или вставите пользователя), то схема будет обновлена.
Цитата:
Но я думал, что база данных создается, когда я запускаю свое приложение, и каждый раз, когда я запускаю приложение, оно создается с любым обновлением, которое я делаю в классах моделей
и любое изменение, которое я внесу в модель класса, отразится на базе данных, например, при добавлении нового свойства к определенному классу, который добавляет новый столбец в таблицу в базе данных
Ваша база данных не просто знает, чтобы обновить себя на основе кода, Вы либо должны запустить команду Update-Database (
Существо Рамочного Код Первого Миграций[
^]) или, Похоже, вы можете настроить свой web. config для автоматического обновления базы данных (
c# - Entity framework code first-как запустить обновление-база данных для производственной базы данных - переполнение стека[
^]) но я бы подумал, что это ужасная идея, так как вы будете совершать изменения в БД, которые, не будучи протестированы, могут сломать ваше приложение.
Цитата:
Но как насчет использования приложения на производственном уровне конечными пользователями ?
Не знаю, о чем вы здесь спрашиваете, но использование кода сначала прекрасно подходит для производства. Просто создайте процесс развертывания, который экранирует любые миграции, связанные с производством (именно здесь я бы не советовал автоматически обновлять БД через web.config), которые могут нарушить вашу среду.
MrLonely_2
Спасибо тебе, Дэвид, за твой ответ, это именно то, что мне нужно:
Ваша база данных создается, когда вы предпринимаете действие против БД.
Но эта ошибка появляется при попытке добавить какие-либо данные в базу данных:
System.Data.SqlClient.SqlException: 'не удается открыть базу данных "Mydatabase", запрошенную логином. Вход в систему не удался.
Ошибка входа пользователя 'Имя_сервера-3FT4ANB\Моеимя''.
Но если я сначала сделаю миграцию, то этой ошибки не произойдет ?
David_Wimbley
Я думаю, что ваша ошибка сама по себе довольно ясна. Миграция создает вашу базу данных и все, что требуется, если вы попытаетесь запустить свое приложение перед миграцией...ваша база данных не существует.
Системы".Данных.Sqlclient как.Ситуацию sqlexception: не удается открыть базу данных "данных mydatabase", запрашиваемую именем входа. Вход в систему не удался.
Ошибка входа пользователя 'Имя_сервера-3FT4ANB\Моеимя''."
Похоже, что Mydatabase в этот момент не существует, и именно поэтому вы получаете эту ошибку.