使用 MSSQL 和 MySQL 数据库作为实体框架 6 模型

Posted

技术标签:

【中文标题】使用 MSSQL 和 MySQL 数据库作为实体框架 6 模型【英文标题】:Using MSSQL and MySQL database both as entity framework 6 model 【发布时间】:2015-03-23 11:22:47 【问题描述】:

我是使用 asp.net 使用 mysql 的新手,我正在尝试使用 asp.net mvc 4 和实体框架 6 来查看来自 MySQL 和 MSSQL 数据库的数据。到目前为止,MSSQL 工作正常。但是每当我尝试从 MySQL 表中查看数据时,我都会收到此错误,

Schema specified is not valid. Errors: Models.MySqlModel.ssdl(2,2) : error
0152: No Entity Framework provider found for the ADO.NET provider with
invariant name 'MySql.Data.MySqlClient'. Make sure the provider is registered
in the 'entityFramework' section of the application config file. See
http://go.microsoft.com/fwlink/?LinkId=260882 for more information.

我已安装 MySQL for Visual Studio 1.1.4MySQL Connector .NET 6.8.3,我已添加 MySql.DataMySql.Data.Entity.EF5、@ 987654326@ 参考文件夹中的程序集。这是我用于数据库连接的 Web.Config 代码,

<connectionStrings>
<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-ABCoLtd-20150101142609;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-ABCoLtd-20150101142609.mdf" />
<add name="mytestdbEntities" connectionString="metadata=res://*/Models.SampleModel.csdl|res://*/Models.SampleModel.ssdl|res://*/Models.SampleModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=DREAGLEASUS64\SQLEXPRESS;initial catalog=mytestdb;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /><add name="mdsdata_demoEntities" connectionString="metadata=res://*/Models.MySqlModel.csdl|res://*/Models.MySqlModel.ssdl|res://*/Models.MySqlModel.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;user id=root;password=4de570;database=mdsdata_demo&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>

<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
  <parameters>
    <parameter value="v11.0" />
  </parameters>
</defaultConnectionFactory>
<providers>
  <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>

来自控制器的代码,用于查看 MySQL 表中的数据,

namespace ABCoLtd.Controllers

    public class HomeController : Controller
    
        mytestdbEntities db = new mytestdbEntities();  //MSSQL Model
        mdsdata_demoEntities dsedb = new mdsdata_demoEntities();  //MySQL Model
        public ActionResult InstrumentList()
        
           return View(dsedb.mkistats.ToList()); //The Line showing error
        
    

我在这里做错了吗?我非常需要这个帮助。请帮助我,您的帮助将不胜感激。 Tnx。

更新

当我在Reference Manager 中看到它们时,它显示为6.8.3.0,但在Properties 中我得到6.8.4.0。这是可能的错误吗?如果是,解决方案是什么?看下面的图片,

【问题讨论】:

【参考方案1】:

检查您是否安装了正确的位版本并在 IIS 中启用了 32 位应用程序。

并尝试删除其中一个参考

【讨论】:

我使用的是 Windows 8.1 64 位。那我还需要检查吗?如果是这样,您能否指出在 IIS 中寻找启用的位置? iis.net/configreference/system.applicationhost/applicationpools/… 我是根据我在 Oracle 提供商方面的经验说的。我遇到了类似的问题,原因有两个: 应该启用 32 位应用程序,并且应该在 web.config/machine.config 中注册数据提供者 Oracle 数据提供者有 32 位和 64 位版本, 我对 MySQL 不太了解,所以建议你检查一下 是的,您的最后一个错误是因为这个版本差异而发生的。 尝试删除对 EF5 的引用,如果没有帮助,请尝试将其添加回来并删除 EF6。如果还是不行,试试最新版的连接器dev.mysql.com/downloads/connector/net/#downloadsandmirrorsites 您确定代码没有错误吗?它看起来像类型不匹配。它需要一个 mdsdata_demoEntities 的集合,但接收到 mkistat 的集合,这与您的帖子的问题无关。

以上是关于使用 MSSQL 和 MySQL 数据库作为实体框架 6 模型的主要内容,如果未能解决你的问题,请参考以下文章

MsSql Mysql Ef Core DBFirst 根据数据库更新实体类

在 Entity Framework 6 中使用 MySQL 和 MSSQL

实体框架/LINQ/SQL 与实体框架/LINQ/MYSQL

MSSQL 和 MySQL 作为链接服务器

如何在 grails 数据源中同时使用 MySQL 和 MSSQL?

在 VB.NET 中为 MySql 和 MSSql 编程