ASP.NET沒有魔法——ASP.NET MVC 與資料庫之MySQL&EF

來源:互聯網
上載者:User

標籤:dbconnect   管理器   dev   end   還需   png   lex   nbsp   ons   

  本章將介紹如何通過Entity Framework來使用My SQL,之前介紹EF時介紹了provider這個配置項,而且也介紹了在ASP.NET訪問MySQL資料仍然是通過ADO.NET,不同的地方僅僅是更換了MySQL的資料提供器,那麼在EF中是否也只需更換“提供器”就可以了呢?接下來就看一下Entity Framework是如何串連使用My SQL資料庫的。

1. 通過Nuget安裝Entity Framework組件到BlogRepository.MySQL項目上:

  

2. 在BlogRepository.MySQL項目中引入MySql.Data.Entity.EF6:

  EF作為主要組件是必須安裝的,只不過EF中只包含了SQL Server相關組件不包含MySQL的,所以還需安裝並引入MySql.Data.Entity.EF6,安裝MySQL組件的方式有兩種,一種是安裝Connector/NET,然後在引用管理器中找到:

  

  而另一種方式是通過Nuget包管理器安裝:

  

  3. 建立一個DBContext:

  

  4. 在DBContext類型上使用MySqlEFConfiguration類型:

  

  使用MySqlEFConfiguration類型是官方建議的,因為該類型中添加了所有與Mysql類型相關的組件,或者在自訂Configuration類型中調用AddDependencyResolver(new MySqlDependencyResolver())方法自行添加,被添加的組件有:

  ● DbProviderFactory -> MySqlClientFactory
  ● IDbConnectionFactory -> MySqlConnectionFactory
  ● MigrationSqlGenerator -> MySqlMigrationSqlGenerator
  ● DbProviderServices -> MySqlProviderServices
  ● IProviderInvariantName -> MySqlProviderInvariantName
  ● IDbProviderFactoryResolver -> MySqlProviderFactoryResolver
  ● IManifestTokenResolver -> MySqlManifestTokenResolver
  ● IDbModelCacheKey -> MySqlModelCacheKeyFactory
  ● IDbExecutionStrategy -> MySqlExecutionStrategy

  當然也可以自訂一個Configuration類型,在文章最前面提到的替換Provider:

  

  以同樣的方式將這個自訂類型應用到DbConfigurationType特性中:

  

  4. 修改BlogRepository,將使用SQL改為使用EF:

  

  5. 添加MySql的連接字串:

  

  DbContext類型會自動在設定檔的connectionString節點中尋找名稱與其類型名稱一致的連接字串並使用。

  註:name與DbContext類型一致並且providerName是MySql.Data.MySqlClient,這與SQL Server不一致,需要特定的程式來解析和使用連接字串。

  6. 運行程式:

  

  

  註:運行正常是因為DbContext類型中使用了MySqlEFConfiguration類型,該類型位於MySql.Data.Entity.EF6.dll程式集,所以主專案編譯的時候也會將該程式集包含進來,而不會出現程式集缺失的情況。

小結:

  本章介紹了如何使用EF來使用MySQL資料庫,與SQL Server區別較大的就是需要引入MySQL相關的程式集然後使用MySQL的資料提供器,這樣EF就可以用來操作MySQL資料庫了,而這個替換的操作是通過在DBContext類型上使用DbConfigurationType特性來實現的。

  通過幾篇對ASP.NET訪問資料庫及EF使用的介紹,可能會發現一些問題就是關於EF的配置:

  ○安裝EF組件時就會動態建立配置資訊,但是這些配置又可以不用。

  ○可以使用代碼的形式(DbConfigurationType特性)來指定配置。

  ○DbContext的串連字元可以通過基類構造方法傳入。

  ○DbContext的連接字串可以讀取設定檔中與其類型名稱對應的配置。

  對於以上問題將在下一篇文章中統一介紹。

 

參考:

  https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework60.html

本文串連:http://www.cnblogs.com/selimsong/p/7655554.html 

ASP.NET沒有魔法——目錄

ASP.NET沒有魔法——ASP.NET MVC 與資料庫之MySQL&EF

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.