[心得] MySQL與Entity Framework測試
以前連接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
07/24 18:23, 1F
→
07/25 02:31, , 2F
07/25 02:31, 2F