Схема в EntityFrameworkModel, которая не существует в самой базе данных MySQL

#c# #mysql #wpf #entity-framework

#c# #mysql #wpf #entity-framework

Вопрос:

Я столкнулся со странной проблемой, которую я никогда раньше не видел. Я попытался выполнить поиск в Stackoverflow, но не смог найти никаких связанных с этим проблем.

Проблема: я разрабатываю приложение .NET Framework WPF для импорта данных из таблиц Excel в базу данных MySQL, размещенную на веб-сервере Apache на некоторой виртуальной машине. Приложение (написанное на C #) обращается к базе данных с использованием EntityFramework 6 и MySQL.Пакеты NuGet Data / MySQL.Data.EntityFramework (версия v8.0.22).

У меня нет проблем с подключением к базе данных как внутри приложения, так и в проводнике Visual Studio Server. Однако всякий раз, когда я пытаюсь прочитать или записать данные в базу данных, я запускаю следующее исключение:

[Таблица не найдена Исключение][1] [1]: https://i.stack.imgur.com/hZlxm.png

База данных, по-видимому, ищет таблицу SIMsaar.SIMsaar.KATEGORIE. SIMsaar — это имя моей базы данных, KATEGORIE — это имя dbTable. Я вообще не знаю, почему между dbName и dbTable есть второй SIMsaar . Вчера я понял, что проблема может быть связана с EntityFramework. Вот фрагмент кода для категории dbTable в edmx-файле:

 <EntityContainer Name="SIMsaarModelStoreContainer">
<EntitySet Name="KATEGORIE" EntityType="Self.KATEGORIE" Schema="SIMsaar" store:Type="Tables" />
  

Как видно из приведенного выше кода, edmx-файл содержит определение схемы для dbTable (оно одинаково для любой таблицы, найденной в EF-модели. Я уже пытался удалить Схему. Это приводит к тому, что приложение работает должным образом, но если я попытаюсь обновить модель из базы данных, любые классы, содержащиеся в модели, удаляются Visual Studio, по существу нарушая работу всего приложения.

Теперь к актуальным вопросам:

Почему EntityFrameworkModel содержит схему? В базе данных нет такой схемы (afaik MySQL не поддерживает схемы баз данных), я могу получить доступ ко всем таблицам через SIMsaar.dbTableName (используя Visual Studio Server Explorer SQL-Script).

Как я могу удалить схему из EntityFrameworkModel, не нарушая работу всего приложения? Как было сказано ранее, я мог бы просто удалить ее из edmx-файла, но это в конечном итоге сломается, когда мне нужно будет обновить базу данных.

Есть ли способ создать новую EntityFrameworkModel без создания DbSchema?

Я ценю любую помощь.

Комментарии:

1. Рассматривали ли вы возможность хранения или резервного копирования того, что у вас есть сейчас, и повторного создания лесов из базы данных? Я только начал использовать mysql. В mysql workbench я изначально был немного удивлен, увидев, что он вызывает схемы баз данных.

2. Я уже пробовал это, но он просто воссоздает модель с точно такой же проблемой. Он всегда добавляет схему базы данных в модель, а затем жалуется, что не может найти таблицы базы данных под самостоятельно созданным именем. например, база данных называется SIMsaar, таблица называется KATEGORIE. Поэтому, естественно, я бы подумал, что он ищет SIMsaar. КАТЕГОРИЯ, но она ищет SIMsaar. SIMsaar. Kategorie