Mysql + Visual Studio 2012
"Failed to find or load the registered .Net Framework Data Provider"
大家好,我想就我遇到的这个错误寻求帮助。我使用带有entity framework 5
的Visual Studio 2012和通过此链接http://dev.mysql.com/tech-resources/articles/mysql-installer-for-windows.html下载的mysql
。在项目中,我添加了ADO.NET实体数据模型,其中包含“从数据库生成”,即带有端口3307的MySql(其他3306使用)。我测试了连接,并说“测试连接成功”。所以我开始使用insert查询编写数据库。当我测试跑步时,它会蹲下来说
"Failed to find or load the registered .Net Framework Data Provider".
非常感谢您的帮助。提前谢谢。
答案 0 :(得分:1)
最简单的答案就是通过NuGet安装MySQL.Data和MySQL.Data.Entities包。只使用MySQL for Windows安装程序不会添加所需的DLL和项目引用,但NuGet会自动为您执行此操作。
这是一个链接...使用前两个包:http://www.nuget.org/packages?q=mysql
答案 1 :(得分:0)
没有app.config的代码的另一种方式:(不要忘记在此代码中设置正确的MySql.Data版本)
public class MySqlDbConfiguration: DbConfiguration
{
public MySqlDbConfiguration()
{
SetDefaultConnectionFactory(new MySqlConnectionFactory());
SetProviderServices(MySqlProviderInvariantName.ProviderName, new MySqlProviderServices());
RegisterFactoryIfRequired();
}
private static void RegisterFactoryIfRequired()
{
string dataProvider = @"MySql.Data.MySqlClient";
string dataProviderDescription = @".Net Framework Data Provider for MySQL";
string dataProviderName = @"MySQL Data Provider";
string dataProviderType =
@"MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d";
bool addProvider = true;
var dataSet = ConfigurationManager.GetSection("system.data") as DataSet;
foreach (DataRow row in dataSet.Tables[0].Rows)
{
if ((row["InvariantName"] as string) == dataProvider)
{
// it is already in the config, no need to add.
addProvider = false;
break;
}
}
if (addProvider)
dataSet.Tables[0].Rows.Add(dataProviderName, dataProviderDescription, dataProvider, dataProviderType);
// test it
var factory = DbProviderFactories.GetFactory("MySql.Data.MySqlClient");
}
}