如何使用EF CodeFirst連接MySql數據庫?
我們這篇文章介紹怎么使用EF連接MySql
作者的環境
VS2017、Win10、MySql5.x
前言
一般在EF中,默認是使用SqlServer數據庫。
為什么我們要使用Mysql呢?
一方面現在的數據庫多種多樣,發展到了非關系數據庫、內存數據存儲等,不得不用其他的軟件;
另一方面C#很早也開始了開源與支持多平台(core)的路程
開始新建項目
我們這里新建的是WebApi項目,當然你喜歡什么類型項目都一樣。
我們新建項目叫EfAndMySql
開始安裝包
install-package MySql.Data.Entity
我們這里的版本是6.9.9
此包因為是依賴EF包的,所以安裝此包時會自動安裝EF包。
開始添加codefirst
項目建完后,我們新建一個數據模型:右鍵->新建項->數據->ADO.NET實體數據模型。名字為Model,如下圖:
點擊添加后,我們選擇【空Code First模型】
配置web.config
安裝完成后,我們配置webconfig文件。
把原來的entityFramework節點換成:
<entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"></provider>
</providers>
</entityFramework>
把原來的connectionStrings換成我們MYSQL的連接:
<connectionStrings>
<add name="Model" connectionString="Data Source=localhost;port=3306;Initial Catalog=EfMysql;user id=root;password=root;" providerName="MySql.Data.MySqlClient"/>
</connectionStrings>
值得注意的是,程序是怎么驗證我們連接的是Mysql數據庫,而不是sqlserver呢?答案就在connectionString中的providerName="MySql.Data.MySqlClient"。 如果我們想用sqlserver或其他數據庫的連接,導入相應的包,換連接與providerName就可以了。
輸入命令與驗證
在程序包管理器控制台以此輸入:
enable-migrations
add-migration init
update-database
在看看我們的Mysql,成功安裝了EfMysql的數據庫:
到此,結束配置
可以關注本人的公眾號,多年經驗的原創文章共享給大家。