EF选择Mysql数据源
EF添加ADO.NET實體模型處直接選擇Mysql數(shù)據(jù)源
最近想到EF是連接多數(shù)據(jù)庫的orm框架,于是就想測試下。查了一堆網(wǎng)上資料后,測試連接mysql成功。步驟如下:
1、在你項目Model層中nuget安裝MySql.Data.Entity
?
如果沒安裝這個provider 就進行下面的步驟。就會出現(xiàn):
?
2、MySql官網(wǎng)下載mysql-installer-community-5.7.13.0
?
我這邊是沒安裝過mysql,所以是安裝全部,第一個選項,MySql Installer。主要目的除了安裝mysql,就是安裝mysql對于vs的數(shù)據(jù)源驅(qū)動,便于我們在新建ADO.NET實體模型的時候,選擇對應(yīng)的數(shù)據(jù)源(MySQL Database)。
3、安裝好后,我這個傳說中的window程序員必須要下個圖形化管理界面。
?
然后里面新建個數(shù)據(jù)庫,測試用。
4、接下來就可以進行測試啦~~~
首先在VS中新建個類庫,這個不多說了,新建項目-->ADO.NET實體模型
?
新建連接
?
更改數(shù)據(jù)源
選擇MySQL Database
Server name:localhost
用戶名密碼就不多說了。
然后就開始選擇表進行實體映射,然后問題就出來了~~~
很奇怪哦,我們壓根沒這個TableDetails這個表,又哪兒來的主鍵類型為null。
百度!無所不能的網(wǎng)友給出了個解決問題的網(wǎng)址——>stakoverflow:
http://stackoverflow.com/questions/33575109/mysql-entity-the-value-for-column-isprimarykey-in-table-tabledetails-is
?
老外回答簡潔,靠譜。
根據(jù)這回答咋操作呢?直接扔截圖吧。
打開mysql的cmd窗口
use test;
set global optimizer_switch='derived_merge=OFF';
問題解決~~~~
這里注意(對于不熟悉mysql命令行的同志,比如我):結(jié)尾一定加分號!!!
上文測試用的數(shù)據(jù)庫test下的school表就映射成功勒
完美~~~
提問:對于oracle,postgresql,這些數(shù)據(jù)庫我也下載了,可能選擇更改數(shù)據(jù)源的時候沒有出來這些選項,這是需要我們單獨去安裝的嗎?哪兒安裝?找不到....
?相關(guān)節(jié)點配置(個人紀錄):
1、UI的webconfig配置數(shù)據(jù)庫連接字符串肯定是少不了的。(連接字符串在我們Model層創(chuàng)建ADO.NET實體模型的時候就自動生成在了Model層的APPCONFIG中,拷貝過來即可)
<connectionStrings><!--mysql的數(shù)據(jù)庫連接字符串--><add name="MysqlEntities" connectionString="metadata=res://*/ModelMysql.csdl|res://*/ModelMysql.ssdl|res://*/ModelMysql.msl;provider=MySql.Data.MySqlClient;provider connection string="server=localhost;user id=joey;password=lovemary;persistsecurityinfo=True;database=test"" providerName="System.Data.EntityClient" /></connectionStrings>2、nuget安裝MySql.Data.Entity只需在Model層中進行,但是跟連接字符串一樣,得再webconfig中定義一個節(jié)點,節(jié)點里面寫路徑方便程序去讀取相關(guān)信息。
在entityFramework節(jié)點下添加MySql.Data.MySqlClient(System.Data.SqlClient是我們在UI nuget EntityFramework的時候自動加載的,sqlserver的驅(qū)動信息)
MySql.Data.MySqlClient同樣我們在Model層nuget?MySql.Data.Entity后就加進了APPCONFIG中,拷貝到UI的webconfig即可。(若嫌麻煩,就直接在UI層也nuget?MySql.Data.Entity,節(jié)點就自動加上去了)
<entityFramework><defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"><parameters><parameter value="mssqllocaldb" /></parameters></defaultConnectionFactory><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, Version=6.9.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /></providers></entityFramework>?
如果您認為這篇文章還不錯或者有所收獲,可以點擊右下角的【推薦】按鈕,因為你的支持是我繼續(xù)寫作,分享的最大動力! 作者:瑪麗的竹子 來源:http://www.cnblogs.com/joeymary/ 聲明:本博客原創(chuàng)文字只代表本人工作中在某一時間內(nèi)總結(jié)的觀點或結(jié)論。非商業(yè),未授權(quán),貼子請以現(xiàn)狀保留,轉(zhuǎn)載時必須保留此段聲明,且在文章頁面明顯位置給出原文連接。
?
轉(zhuǎn)載于:https://www.cnblogs.com/joeymary/p/5634262.html
總結(jié)
以上是生活随笔為你收集整理的EF选择Mysql数据源的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PAT (Advanced Level)
- 下一篇: 成功驱动HD4600-Clover引导