Дві найважливіші поради:
[1] - Переконайтесь, що ваш проект повністю побудований, перш ніж запускати нову команду лісів.
Інакше ...
- Ви почнете писати рядок коду.
- Ви зрозумієте, що у вашій моделі відсутній необхідний стовпець БД.
- Ви підете спробувати покласти його на риштування.
- Через двадцять хвилин ви зрозумієте, що причина вашої збірки (і команди ешафота) невдала полягає в тому, що у вас буквально є наполовину написаний рядок коду. Ой!
[2] - Перевірте в контролі джерела або зробіть копію:
- Дозволяє легко перевірити, що змінилося.
- Дозволяє відкат, якщо потрібно.
Якщо вам не пощастить або помилиться, ви можете отримати дуже прикрі проблеми з "куркою та яйцем".
Інші проблеми:
Якщо у вас кілька бібліотек DLL, переконайтеся, що ви не створюєте неправильний проект . Повідомлення "Не вдалося побудувати" може виникати з багатьох причин, але найдурнішим було б, якщо у вас не встановлений EFCore в проекті, який ви виконуєте.
У консолі диспетчера пакетів є Default project
випадаючий список, і, можливо, саме там опинилися ваші нові файли, якщо ви пропустили очікувані зміни.
Кращим рішенням, ніж запам'ятовування встановлення випадаючого списку, є додавання -Project
перемикача до команди будівельних лісів.
Це повна команда, яку я використовую:
Для EF Core 2
Scaffold-DbContext -Connection "Сервер = (локальний); База даних = DefenderRRCart; Інтегрована безпека = True; Trusted_Connection = True;" -Provider Microsoft.EntityFrameworkCore.SqlServer -OutputDir RRStoreContext.Models -context RRStoreContext -Project RR.DataAccess -force
Для EF Core 3
dotnet ef dbcontext scaffold "Server = tcp: XXXXX.database.windows.net, 1433; Початковий каталог = DATABASE_NAME; Зберегти інформацію про безпеку = False; Ім'я користувача = ІМЯ ІМЯ; Пароль = ПАРОЛЬ; MultipleActiveResultSets = False; Encrypt = True; TrustServerseter ; Час очікування підключення = 30; " Microsoft.EntityFrameworkCore.SqlServer -o DB.Models --context-dir DB.Contexts --context RRDBContext --project RR.EF.csproj --force --use-database-names
Примітка: -force перезапише файли, але не видалить ті, які більше не існують. Якщо ви видаляєте таблиці зі своєї БД, ви повинні видалити старі файли сутності самостійно (просто сортуйте в Провіднику за датою та видаліть старі).
Повне посилання на риштування:
EF Core 2:
https://docs.efproject.net/en/latest/miscellaneous/cli/powershell.html#scaffold-dbcontext (це
EF Core 3:
https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet