c # Entity Framework: при доступе к базе данных произошла ошибка - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть приложение, которое использует MySQL в качестве базы данных.и работает правильно.

Но сейчас.Мне нужно создать версию этого.Внутри дома и для дома.

Моя проблема в том, что когда я обновляю функцию или добавляю функцию в собственную программу, мне также необходимо обновить домашнюю версию, домашняя база данных использует базу данных sqlite.

Хранимая процедура не 'т работают в sqlite.Поэтому я решил использовать структуру сущностей.Так что я могу легко изменить базу данных.Я уже создаю модель для одной из моих таблиц

. Здесь указаны имена для автоматического предложения моего приложения.

А вот мой класс

class Given
    {
        public int id { get; set; }
        public string name { get; set; }
        public string @operator { get; set; }
        public DateTime data_time { get; set; }
    }

И яиспользовал это так

class MyDb : DbContext
    {
        public MyDb() : base("name=sample")
        {

        }
        public DbSet<Given> tble_given { get; set; }
    }

я назвал его tble_given , потому что это имя моей таблицы в базе данных

И это мое соединениестрока в файле App.config

<connectionStrings>

    <add name="sample" providerName="MySql.Data.MySqlClient" connectionString="server=127.0.0.1; uid=root; pwd=; database=db_sample;default command timeout=20;" />
  </connectionStrings>

А это мой код для доступа к данным в базе данных

                using (var db = new MyDb())
                {
                    db.Database.Connection.Open();
                    Debug.WriteLine(db.Database.Connection.State);
                    foreach (var item in db.tble_given.ToList())
                    {

                    }
                }

Я добавил открытое соединение и состояние соединения, чтобы проверитьесли соединение действительно.

но когда я запрашиваю его.

добавлен код db.tble_given.ToList()

Исключение: «System.Data.Entity.Core.ProviderIncompatibleException» в Гватемале Coding.exe Исключение типа «System.Data.Entity.Core.ProviderIncompatibleException 'произошла в Гватемале Coding.exe, но не была обработана в коде пользователя. Произошла ошибка при доступе к базе данных.Обычно это означает, что соединение с базой данных не удалось.Убедитесь, что строка подключения верна и что соответствующий конструктор DbContext используется для ее указания или поиска в файле конфигурации приложения.См. http://go.microsoft.com/fwlink/?LinkId=386386 для получения информации о DbContext и соединениях.Подробности о сбое см. Во внутреннем исключении.

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

Почему у меня возникает эта ошибка, если состояние соединения открыто?

Спасибо

1 Ответ

0 голосов
/ 24 ноября 2018

Для каждой базы данных будет отдельный пакет nuget.В вашем случае обе ваши базы данных могут иметь разные пакеты nuget.Поэтому вам нужно взять пакет nuget, совместимый с вашей базой данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...