gcogco10 Ответов: 1

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 как"&ГТ;

1 Ответов

Рейтинг:
6

gcogco10

Ричард Маккатчен, большое спасибо, приятель, ты просто звезда. Я должен был следовать документации шаг за шагом. Теперь вы можете увидеть весь мой DbContext в папке Model. Спасибо, приятель, черт возьми, что за упражнение.

Richard MacCutchan

Всегда стоит сначала обратиться к документации.