3

mysql + Visual Studio 2012

"Failed to find or load the registered .Net Framework Data Provider"

大家好,我想就我遇到的这个错误寻求帮助。我使用 Visual Studio 2012entity framework 5mysql通过此链接http://dev.mysql.com/tech-resources/articles/mysql-installer-for-windows.html下载。在项目中,我添加了带有“从数据库生成”的 ADO.NET 实体数据模型,这是带有端口 3307 的 MySql(其他使用的 3306)。我测试了连接,它显示“测试连接成功”。所以我开始编码插入查询到数据库。当我测试运行时,它挂断并说

"Failed to find or load the registered .Net Framework Data Provider". 

非常感激你的帮助。提前致谢。

4

2 回答 2

1

最简单的答案就是通过 NuGet 安装 MySQL.Data 和 MySQL.Data.Entities 包。仅使用 MySQL for Windows 安装程序不会添加您需要的必要 DLL 和项目引用,但 NuGet 会自动为您完成。

这是一个链接...使用前 2 个包:http ://www.nuget.org/packages?q=mysql

于 2013-09-06T14:55:47.363 回答
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");
    }

}
于 2014-02-14T19:40:48.300 回答