Scaffold-dbcontext : не удается найти позиционный параметр, принимающий модели аргументов
Привет Команда
Я сталкиваюсь с этой проблемой команды Nuget с моей консолью, в основном я хочу запустить DbContext в свой проект, следовательно, он не существует. Я запустил несколько пакетов, таких как EntityFramework.Инструменты и SqlServer, но все же я не смог добиться этого вовремя, в чем может быть проблема?
Что я уже пробовал:
scaffold-DBContext "Data Source=(LocalDb)\MSSQLLocalDB; Catalog=eNtsaOnlineRegistrationDB;Integrated Security=True" Microsoft.EntityFrameworkCore.SqlServer-OutputDir Models
gcogco10
Я пытаюсь изменить команду на scaffold-DBContext "Data Source=(LocalDb)\MSSQLLocalDB; Catalog=eNtsaOnlineRegistrationDB;Integrated Security=True" Microsoft.EntityFrameworkCore.SqlServer-многословный, до сих пор не знаю, что может быть проблемой.
Liktor Janos
Можете ли вы показать точное сообщение об ошибке? Было бы легче помочь, если бы мы знали больше, чем "все еще не везет"
gcogco10
Не удалось найти сборку поставщика с именем Microsoft.EntityFrameworkCore.SqlServer-Подробный. Убедитесь, что указанное имя является правильным и на него ссылается проект.
Liktor Janos
Хм... может быть, вам стоит поставить пробел между "SqlServer" и "-Verbose"
То же самое относится и к вашей первой команде с аргументом-OutputDir.
Liktor Janos
Кстати, вам стоит проверить вот это:
- Правильны ли настройки строки подключения?
- Все ваши связанные таблицы имеют первичные ключи?
- Возможно, ваши новые файлы существуют, однако они не добавляются в решение.
gcogco10
@Liktor, я бы сказал, что каждый раз, когда я пытаюсь запустить команду, она не добавляется в решение. Вот моя строка подключения ниже, <connectionstrings>
&ЛТ;добавить имя="eNtsaOnlineRegistrationDB" свойства connectionString="источник данных=(на localdb)\MSSQLLocalDB;ключевое слово attachdbfilename=|параметр datadirectory|\eNtsaOnlineRegistrationDB.МДФ;начальный каталог=eNtsaOnlineRegistration; Комплексная безопасность=истина" имя_поставщика="системы.Данных.Sqlclient как"&ГТ;
gcogco10
ОК, приятель, я повторно запустил команду и получил новую ошибку. Это один scaffold-DBContext : исключение вызова "Start" с аргументом(АМИ) "1": "Система не может найти указанный файл" да, я поставил пробел после sqlServer-Verbose и получил вышеуказанную ошибку.
Liktor Janos
Итак, теперь у нас есть сообщение об ошибке :) Давайте посмотрим, какой путь к файлу связан с этой проблемой.
Вы можете ошибаться с:
- путь к файлу mdf
- путь к целевому каталогу
Вы должны попробовать все эти пути как путь Абсолюта. Конечно, не для добычи, а просто для охоты на жуков. Я имею в виду вот что: -OutputDir c:\somedirectory\
gcogco10
Итак, теперь я должен поместить каталог проекта, в котором находится файл mdf, сразу после-OutputDir?
Liktor Janos
Это стоит попробовать. Просто для того, чтобы убедиться: ваш MDF-файл существует, действителен и доступен.
И то же самое касается-OutputDir, потому что нет каталога, висящего в воздухе, как "модели". Это должен быть путь, ведущий к этому каталогу. Вы можете указать его, или это может зависеть от текущего каталога.
Кстати, что произойдет, если вы запустите команду DIR в консоли управления пакетами?
gcogco10
Хорошо, я сделал это, приятель, и у меня пропал пакет под названием Microsoft.EntityFramework.Инструменты V 3.1.1. Ошибка пропала, но теперь я не могу показаться, чтобы найти новый класс DbContext в папке модели. это была первоначальная цель получить доступ к моему DBContext. Помогите мне в этом вопросе.
Liktor Janos
Mmmmaybeeee.. Я что-то не так понял.
У вас была проблема с отсутствующим пакетом, но вы уже решили ее, и теперь вы просто ищете этот файл DbContext.cs?
Liktor Janos
Я думаю, что это просто ситуация RTFM :-)
Тем не менее я постараюсь помочь :)
Итак... теперь вы должны решить проблемы с недостающим пакетом. Да, может быть, у вас будет больше, чем один, когда вы продолжите двигаться дальше. Попробуйте графический интерфейс NuGet, чтобы решить эти недостающие вещи пакета. Это проще, чем командная строка.
После этого вы должны проверить текущий каталог в консоли PM. Попробуйте эту команду DIR, как я предложил выше. Основываясь на этих выходных данных, вы можете проверить, существует ли каталог моделей и где находится этот каталог моделей.
gcogco10
Я запустил его и теперь получаю Ключевое слово, не поддерживаемое "каталогом".
Liktor Janos
Ваша соединительная строка неверна. Здесь нет параметра каталога. Правильный вариант - "начальный каталог"
gcogco10
Как я могу изменить свою пару connectionString? одного примера будет достаточно, чтобы я попробовал проверить это сейчас.
Liktor Janos
А не может дать вам работающий пример, потому что точное окружение известно только вам.
Хотя попробуйте вот это: https://www.connectionstrings.com/sql-server/
gcogco10
Вот моя строка подключения, и все же я правильно использую начальный каталог, <connectionstrings>
&ЛТ;добавить имя="eNtsaOnlineRegistrationDB" свойства connectionString="источник данных=(на localdb)\MSSQLLocalDB;ключевое слово attachdbfilename=|параметр datadirectory|\eNtsaOnlineRegistrationDB.МДФ;начальный каталог=мастер; Комплексная безопасность=истина" имя_поставщика="системы.Данных.Sqlclient как"&ГТ;