作者tomex (Tomex Ou)
看板C_Sharp
标题[心得] MySQL与Entity Framework测试
时间Sat Jul 24 12:33:19 2010
以前连接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
1F:→ chancewen:我目前还是习惯用ADO然後连线字串写在config档案XD 07/24 18:23
2F:→ tomex:後来发现mysql entity可以work,跟大家回报一下。 07/25 02:31