#asp.net-core #entity-framework-core #ef-core-5.0
#asp.net-ядро #сущность-основа-ядро #ef-core-5.0
Вопрос:
Я только что обновил свой демонстрационный проект Blazor до EF Core 5.0 RC1, чтобы воспользоваться преимуществами новой функции «многие ко многим», которую она предоставляет. После завершения обновления я запустил свои модульные тесты, и все они завершились с той же ошибкой: «Недопустимое имя объекта»
После небольшого исследования я определил, что запрос больше не включает схему таблицы в запрос. Поскольку все мои таблицы принадлежат схемам, отличным от dbo, ни один из моих запросов не работает. Я пытался выяснить, как заставить ef core 5.0 использовать схему таблицы, но мне не повезло.
Я указываю схему в модели с атрибутом таблицы, как показано ниже.
[Table("Work", Schema = "act")]
public class Work
{
[Key]
public int WorkID { get; set; }
}
Я выполнил миграцию и написал сценарий после обновления, и все таблицы имели правильную схему, поэтому очевидно, что ef может видеть схему, но по какой-то причине она не отображается в запросе.
Спасибо за любую помощь, которую вы можете предоставить.
Комментарии:
1. (1) Вы говорите обо всех таблицах или только о таблицах объединения «многие ко многим»? (2) Как вы настраиваете таблицы соединений? У вас все еще есть класс для них? Если нет, то как указать имя / схему таблицы? Можете ли вы опубликовать пример одной из моделей / конфигурации «многие ко многим» — до версии 5.0 и сейчас?
2. Попробуйте использовать Microsoft SQL Server Management Studio (SSMS), чтобы проверить таблицы данных и наличие схем, и убедитесь, что вы используете ту же базу данных. Кроме того, насколько я знаю, SQLite не поддерживает схемы , пожалуйста, проверьте свой код, чтобы убедиться, что вы его не используете. Наконец, я предлагаю вам опубликовать достаточно кода (включая таблицу «многие ко многим», определение dbcontext и оператор запроса), чтобы воспроизвести проблему, и лучше опубликовать подробное сообщение об ошибке.
3. Если предположение Ивана верно, я отправил вопрос № 22844 для обсуждения с командой.