c#实体框架:访问数据库时出错

hzbexzde  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(314)

我有一个使用mysql作为数据库的现有应用程序。而且工作正常。
但是现在。我需要创建一个版本。内部和家庭为基础的。
我的问题是,当我在内部程序中更新一个特性或添加一个特性时,我还需要更新基于home的,基于home的使用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())
                    {

                    }
                }

我添加了连接open和连接状态以检查连接是否有效。
但当我质疑它的时候。
添加了代码 db.tble_given.ToList() 引发异常:危地马拉coding.exe中的“system.data.entity.core.providerincompatibleexception”危地马拉coding.exe中出现类型为“system.data.entity.core.providerincompatibleexception”的异常,但未在用户代码中处理访问数据库时出错。这通常意味着到数据库的连接失败。检查连接字符串是否正确,以及是否正在使用适当的dbcontext构造函数来指定它或在应用程序的配置文件中找到它。看到了吗http://go.microsoft.com/fwlink/?linkid=386386 有关dbcontext和连接的信息。有关失败的详细信息,请参见内部异常。
我试着自己解决它,但我不能使这个代码工作。
如果连接状态为“打开”,为什么会出现此错误?
谢谢您

9nvpjoqh

9nvpjoqh1#

对于每个数据库,都有一个单独的nuget包。在您的例子中,两个数据库可能有不同的nuget包。所以您需要使用与数据库兼容的nuget包。

相关问题