asp.net mvc4連接mysql


環境:vs2013+mysql5.6+mysql connector for .net 6.8.3+MySQL for Visual Studio 1.1.3

參考:http://dev.mysql.com/doc/connector-net/en/connector-net-entityframework60.html

mvc4連接mysql的資料很少,百度了一圈也沒找到。一開始用的vs2013怎么也連接不上mysql,連ado.net不顯示,用mysql.data的直接連接倒是能成功,但是到mvc的時候就需要各種配置了。

最后在mysql的官網上找到了資料:

1.首先要先安裝MySQL for Visual Studio ,你可能會說我安裝了啊,怎么還是不顯示呢看官網說的:

所以你需要安裝1.1版本以上的才可以,除此之外,mysql官網還說了:

Visual Studio 2013 (Professional edition and up only) is supported by MySQL Connector/Net 6.8 and up with the MySQL for Visual Studio product.

必須是vs2013 professional版本以上才可以!!

等等,mysql的官網還有條:

Always install the MySQL for Visual Studio before installing MySQL Connector/Net.

安裝MySQL Connector/Net之前要先安裝MySQL for Visual Studio,不知道聰明的你是不是安裝反了

安裝MySQL Connector/Net,可以通過NuGet工具獲得,比較輕松愉快,當然你也可以自己下載,自己引用

2.

配置環境:

修改web.config

<connectionStrings>
    <add name="MyContext" providerName="MySql.Data.MySqlClient" connectionString="server=localhost;
      port=3306;database=mycontext;uid=root;password=********"/>
  </connectionStrings>
  <entityFramework  codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, 
        MySql.Data.Entity.EF6" />
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, 
        EntityFramework.SqlServer" />
    </providers>
  </entityFramework>

  添加mysql.data,mysql.data.entity.EF6到引用

下面mysql官方還溫馨的建議了:

(1)在context class頂部添加:[DbConfigurationType(typeof(MySqlEFConfiguration))]

(2)添加  codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6" 到<entityFramework> 上面的字節里我已經添加了

(3)程序開始的時候添加 DbConfiguration.SetConfiguration(new MySqlEFConfiguration());

實例代碼:

[DbConfigurationType(typeof(MySqlEFConfiguration))]
  class JourneyContext : DbContext
  {
    public DbSet<MyPlace> MyPlaces { get; set; }
 
    public JourneyContext()
      : base()
    {
 
    }
 
    public JourneyContext(DbConnection existingConnection, bool contextOwnsConnection)
      : base(existingConnection, contextOwnsConnection)
    {
 
    }
  }

  using (MySqlConnection conn = new MySqlConnection("<connectionString>"))
  {
    conn.Open();
    ...

    using (var context = new JourneyContext(conn, false))
    {
      ... 
    }
  }
View Code

 mysql官網有一個例子,參考引用中就是,如果你設了密碼會給有InnerException = {"Authentication to host 'localhost' for user 'root' using method 'mysql_native_password' failed with message: Access denied for user 'root'@'localhost' (using password: NO)"}" 的提示,你需要在連接字符串中增加

Persist Security Info=True; 

我實現的效果:

 剛開始學習mvc,感覺比webform好用一些,要是連上了過來道個喜吧

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM