EF選擇Mysql數據源


EF添加ADO.NET實體模型處直接選擇Mysql數據源

最近想到EF是連接多數據庫的orm框架,於是就想測試下。查了一堆網上資料后,測試連接mysql成功。步驟如下:

1、在你項目Model層中nuget安裝MySql.Data.Entity

 

如果沒安裝這個provider 就進行下面的步驟。就會出現:

 

2、MySql官網下載mysql-installer-community-5.7.13.0

 

我這邊是沒安裝過mysql,所以是安裝全部,第一個選項,MySql Installer。主要目的除了安裝mysql,就是安裝mysql對於vs的數據源驅動,便於我們在新建ADO.NET實體模型的時候,選擇對應的數據源(MySQL Database)。

3、安裝好后,我這個傳說中的window程序員必須要下個圖形化管理界面。

 

然后里面新建個數據庫,測試用。

4、接下來就可以進行測試啦~~~

首先在VS中新建個類庫,這個不多說了,新建項目-->ADO.NET實體模型

 

新建連接

 

更改數據源

選擇MySQL Database

Server name:localhost

用戶名密碼就不多說了。

然后就開始選擇表進行實體映射,然后問題就出來了~~~

很奇怪哦,我們壓根沒這個TableDetails這個表,又哪兒來的主鍵類型為null。

百度!無所不能的網友給出了個解決問題的網址——>stakoverflow:

http://stackoverflow.com/questions/33575109/mysql-entity-the-value-for-column-isprimarykey-in-table-tabledetails-is

 

老外回答簡潔,靠譜。

根據這回答咋操作呢?直接扔截圖吧。

打開mysqlcmd窗口

use test;

set global optimizer_switch='derived_merge=OFF';

問題解決~~~~

這里注意(對於不熟悉mysql命令行的同志,比如我):結尾一定加分號!!!

上文測試用的數據庫test下的school表就映射成功勒

完美~~~

提問:對於oraclepostgresql,這些數據庫我也下載了,可能選擇更改數據源的時候沒有出來這些選項,這是需要我們單獨去安裝的嗎?哪兒安裝?找不到....

 相關節點配置(個人紀錄):

1、UI的webconfig配置數據庫連接字符串肯定是少不了的。(連接字符串在我們Model層創建ADO.NET實體模型的時候就自動生成在了Model層的APPCONFIG中,拷貝過來即可)

<connectionStrings>
    <!--mysql的數據庫連接字符串-->
    <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中定義一個節點,節點里面寫路徑方便程序去讀取相關信息。

在entityFramework節點下添加MySql.Data.MySqlClient(System.Data.SqlClient是我們在UI nuget EntityFramework的時候自動加載的,sqlserver的驅動信息)

MySql.Data.MySqlClient同樣我們在Model層nuget MySql.Data.Entity后就加進了APPCONFIG中,拷貝到UI的webconfig即可。(若嫌麻煩,就直接在UI層也nuget MySql.Data.Entity,節點就自動加上去了)

<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>

 

  

如果您認為這篇文章還不錯或者有所收獲,可以點擊右下角的 【推薦】按鈕,因為你的支持是我繼續寫作,分享的最大動力!
作者: 瑪麗的竹子
聲明:本博客原創文字只代表本人工作中在某一時間內總結的觀點或結論。非商業,未授權,貼子請以現狀保留,轉載時必須保留此段聲明,且在文章頁面明顯位置給出原文連接。

 


免責聲明!

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



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