2014-03-02 113 views
1

我试图将我用Visual Studio创建的mvc网站连接到MySQL。 使用SqlServer时,我的网站工作得很好。Visual Studio 2013 MVC MySql连接

在我的web.config我说:

<connectionStrings> 
    <add name="MySqlConnection" connectionString ="Server=localhost;port=3306;Database=BachelorParty;Uid=root;Pwd=root;" providerName="MySql.Data.MySqlClient" /> 
</connectionStrings> 
<entityFramework> 
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
<providers> 
    <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" /> 
</providers> 

没有与用户 '根' 和密码 '根' 在MySQL Workbench中登录没有问题。

在我的DbContext类我说:

[DbConfigurationType(typeof(MySqlEFConfiguration))] 

当我运行了整个事情,我得到一个NullReferenceException在Global.asax中:

Database.SetInitializer(new BachelorPartyInitializer()); 
new BachelorPartyContext().Students.ToList(); //<--nullreferenceexception 

在刷新服务器资源管理器中会发生以下情况:

Authentication to host 'localhost' for user 'root' using method 'mysql_native_password' failed with message: 
Access denied for user 'root'@'localhost' (using password: NO) 

关于修复这个道德败坏问题的任何想法? EntityFramework,MySql.Data,MySql.Data.Entities,MySql Connector等安装...

回答

0

同时我固定我的问题,我不得不从我的connectionString

<connectionStrings> 
<add name="BachelorProef" connectionString="Server=localhost;Database=BachelorParty;Uid=root;Pwd=root;" providerName="MySql.Data.MySqlClient" /> 
</connectionStrings> 
0

您是否尝试过不同的连接字符串格式?

<add name="MySqlConnection" 
    connectionString="server=localhost;User Id=root;password=root;Persist Security Info=True;database=BachelorParty;port=3306;" 
    providerName="MySql.Data.MySqlClient" /> 
0

确定我有这个同样的问题,解决如下:

MySql.Data.MySqlClient.MySqlConnection MSC =新MySql.Data.MySqlClient.MySqlConnection(myConnectionstring);

System.Data.Entity.DbContext tE1 = new System.Data.Entity.DbContext(msc,false);

然后用TE1与您的数据工作.... TE1也可以与您的所有类型化数据集的EF6背景等等...........

重要的事情似乎要重写与MySQL特定连接的默认DbContext连接。在默认的上下文连接中使用MySQL连接字符串是一个错误,尽管这个“错误”在大多数情况下似乎可以正常工作。

Jeltz

+0

排除 '端口= 3306' 你是100%肯定,你的ConnectionString是确定的?参看我的回答是,我不得不排除'port = 3306' – Seneca