[心得] MySQL與Entity Framework測試

看板C_Sharp作者 (Tomex Ou)時間15年前 (2010/07/24 12:33), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串1/1
以前連接MySQL資料庫,總是使用ADO.NET Connection String方式連接 既然Entity Framework 4.0都出來了,對LINQ查詢語法也粗略看了一些 就想動手來實驗一下,能否產生MySQL的Entity Model (.edmx)檔。 首先至MySQL官網下載兩個Connector: MySQL Connector/Net 6.2.3 Stable (以下簡稱A) MySQL Connector/Net 6.3.2 Beta (以下簡稱B) 要用就用最新的Entity版本,因此IDE環境選用VS2010 + NET4.0 安裝了A Connector,再產生SQL Connection精靈視窗裏 沒有出現MySQL Driver,原來只有B Connector才支援VS2010 既然是Beta版,代表不穩定,對資料庫的存取可是危險的事 但本著實驗及日後會釋出穩定版本期待下 我就先裝了B Connector中的VS2010 Integration. 當專案加入一個ADO.NET Entity Mode (.dbmx)檔時 可以透過Generator Tools連接資料庫,也能挑選Table 目前B版本在Web.config中尚無法產生的ConnectString 不過它有提示文字,就照著別的版本自行建立了字串,如: metadata=res://*/Model1.csdl... 只要注意它的ConnName要跟Model1.Designer.cs中的建構子相同就行。 檢視edmx檔的細節: File: Model1.edmx Context: Model1Entities Table: t Column: id 試其legacy執行語法: Model1Entities db = new Model1Entities(); db.ExecuteStoreCommand("delete from t where id=1"); db.SaveChanges(); 可成功執行,代表Connection連接上沒有問題。 再使用VS2010語法提示,要下LINQ: db.t.id 理論上應該要出現欄位id名稱,但它說無法resolve symbol 'id' 查了Model1.dbmx/cs的產生程式碼,也跟一般的Model沒啥兩樣。 做到這,我知道該停止繼續往下探鑽了! 因為說到維護這EDMX檔,99%肯定要借用VS2010產生工具的智能, 就算成功手動修改這些cs碼,日後也會被工具所抹掉。 結論: ORM Mapping的資料維護技術很棒,它對日後的維護工作幫助很大 但Mapping的工具簡易度及連接各式資料庫若還沒普及 (微軟只獨厚自己的SQL Server) 還是再等等比較好。 我也有看過LINQ中替代傳統SQL語法的LEFT JOIN/RIGHT JOIN 感覺其LINQ語法也稍嫌複雜,就跟SQL Server中的分頁語法 遲遲不用LIMIT 1, 10般簡單的語法思維,令人無法思解。 Silverlight 4.0的資料存取,語法也都太過複雜 甚至ASP.NET MVC般的抽象語法,精通者或許覺得很棒 但對常人入門來說,還是頁面語法太過複雜。 以上的新技術,我都正面肯定微軟新技術的導入動機(否則我也不會去研究) 只是每次導入轉換都是成本,不得不仔細估量比較 或許等一等比較好。 (不過公司使用微軟技術為主,或初學者則可盡量去試用) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.166.114.24

07/24 18:23, , 1F
我目前還是習慣用ADO然後連線字串寫在config檔案XD
07/24 18:23, 1F

07/25 02:31, , 2F
後來發現mysql entity可以work,跟大家回報一下。
07/25 02:31, 2F
文章代碼(AID): #1CIcqJMR (C_Sharp)