如果此时你用ADO.NET元素对数据进行CRUD操作并不会使用存储过程,我们需要将存储过程进行映射。查询和另外三项操作的映射方式不同,我们分开讨论。ADO.NET元素查询存储过程的导入。
名称取为“NorthWindEF.edmx”,然后点击“添加”。然后,在后面的步骤中,数据库选择“NorthWind”后,在选择影射对象是,把表、试图、存储过程全部都选上,其他的均保存默认的即可。最终生成的结果如下图所示。***,谈谈我认为的一些缺点:
Edmx包含了所有对象的csdl,ssdl,msl文件,过于庞大,如果要手动修改这个文件,一不小心,眼睛看花了,就改错了。(和数据集一样的毛病)。目前EF支持表、试图、存储过程,其他的对象不支持,而且对使用存储过程有很多限制(ADO.NET元素目前有EFExtension提供了更多对象的支持)。
除了MS SQL Server可直接提供这种可视化的设计界面外,其他的数据库目前还没有提供可视化设计界面(但可以自己来实现,后面介绍)。性能问题。(网上看到有说比ADO.Net慢700百,又有人说比ADO.net快的,具体情况我还没测试过, 但我觉得像这个些类型的框架,性能肯定是比上原生态的ADO.net慢)好了,接下来,学习以下简单的各种操作。
接触ADO.NET Entityframework有一段时间了,ADO.NET元素在实际项目的应用中有一个***的问题就是M$没有对多种数据库提供支持,在笔者最近碰到的一个网站项目中,公司要求使用MYSQL,到处找MYSQL的EFProvider,发现Devart dotConnect还不错,提供了比较完善的解决方案,ADO.NET元素只是在自动从数据库提取物理模型中存在编码的问题,到目前还没有找到解决办法,但是Devart dotConnect是收费的,专业版得上千美刀,有Free Edition,但是不提供对EntityFramwork的支持。
无奈,寻找其他的解决方案。偶然间在一份SUN的文档中有提到在未来版本中对AEF的支持,到MYSQL.com下载***的MySql.Data.dll为5.2.5版,并没有对AEF提供支持,再到源码服务器,惊喜得看到多了一个MySql.Data.Entity项目,MySql.Data也已经到了5.3.0版。立刻下载。#t#
下载后先编译MySQL.Data,并签名程序集,MySQL.Data.Entity引用MySQL.Data,编译并签名,ADO.NET元素取得MySQL.Data.Entity的PublicKeyToken,修改MySQL.Data中类MySqlClientFactory的IServiceProvider.GetService方法相关的代码,将Provider类型指向刚才编译好的MySQL.Data.Entity程序集中的MySql.Data.MySqlClient.MySqlProviderServices类,修改后大概就像下面的样子。