ADO.NET Entityframework MYSQL provider
2009-01-09 12:46
459 查看
接触ADO.NET Entityframework有一段时间了,在实际项目的应用中有一个最大的问题就是M$没有对多种数据库提供支持,在笔者最近碰到的一个网站项目中,公司要求使用MYSQL,到处找MYSQL的EFProvider,发现Devart dotConnect还不错,提供了比较完善的解决方案,只是在自动从数据库提取物理模型中存在编码的问题,到目前还没有找到解决办法,但是Devart dotConnect是收费的,专业版得上千美刀,有Free Edition,但是不提供对EntityFramwork的支持。无奈,寻找其他的解决方案。
偶然间在一份SUN的文档中有提到在未来版本中对AEF的支持,到MYSQL.com下载最新的MySql.Data.dll为5.2.5版,并没有对AEF提供支持,再到源码服务器,惊喜得看到多了一个MySql.Data.Entity项目,MySql.Data也已经到了5.3.0版。立刻下载。
下载后先编译MySQL.Data,并签名程序集,MySQL.Data.Entity引用MySQL.Data,编译并签名,取得MySQL.Data.Entity的PublicKeyToken,修改MySQL.Data中类MySqlClientFactory的IServiceProvider.GetService方法相关的代码,将Provider类型指向刚才编译好的MySQL.Data.Entity程序集中的MySql.Data.MySqlClient.MySqlProviderServices类,修改后大概就像下面的样子。
Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.Entity;
namespace MySql.Data.Entity.Tests
{
class programe
{
static void Main()
{
using (Model3.Model3Container1 db = new Model3.Model3Container1(GetConnectionString()))
{
var coms = from com in db.Company
where com.ID < 50
select com;
foreach (var item in coms)
{
Console.WriteLine(item.Name);
}
}
Console.Read();
}
private static string GetConnectionString()
{
return String.Format(
"metadata=TestDB.csdl|TestDB.msl|TestDB.ssdl;provider=MySql.Data.MySqlClient; provider connection string=\"{0}\""
, "User Id=root;Password=root;Host=192.168.1.152;Database=testdb;Persist Security Info=True");
}
}
}
到这里为止已经能够正常读取出数据,但是由于该组件还未正式发布,笔者也未进行详细的测试,稳定性、可靠性可能存在一定问题,希望有兴趣的朋友一起研究和学习,对在项目中急需使用AEF for MySQL的朋友能有所帮助。
最后提供两个DLL文件的下载:AEF for MYSQL
偶然间在一份SUN的文档中有提到在未来版本中对AEF的支持,到MYSQL.com下载最新的MySql.Data.dll为5.2.5版,并没有对AEF提供支持,再到源码服务器,惊喜得看到多了一个MySql.Data.Entity项目,MySql.Data也已经到了5.3.0版。立刻下载。
下载后先编译MySQL.Data,并签名程序集,MySQL.Data.Entity引用MySQL.Data,编译并签名,取得MySQL.Data.Entity的PublicKeyToken,修改MySQL.Data中类MySqlClientFactory的IServiceProvider.GetService方法相关的代码,将Provider类型指向刚才编译好的MySQL.Data.Entity程序集中的MySql.Data.MySqlClient.MySqlProviderServices类,修改后大概就像下面的样子。
Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.Entity;
namespace MySql.Data.Entity.Tests
{
class programe
{
static void Main()
{
using (Model3.Model3Container1 db = new Model3.Model3Container1(GetConnectionString()))
{
var coms = from com in db.Company
where com.ID < 50
select com;
foreach (var item in coms)
{
Console.WriteLine(item.Name);
}
}
Console.Read();
}
private static string GetConnectionString()
{
return String.Format(
"metadata=TestDB.csdl|TestDB.msl|TestDB.ssdl;provider=MySql.Data.MySqlClient; provider connection string=\"{0}\""
, "User Id=root;Password=root;Host=192.168.1.152;Database=testdb;Persist Security Info=True");
}
}
}
到这里为止已经能够正常读取出数据,但是由于该组件还未正式发布,笔者也未进行详细的测试,稳定性、可靠性可能存在一定问题,希望有兴趣的朋友一起研究和学习,对在项目中急需使用AEF for MySQL的朋友能有所帮助。
最后提供两个DLL文件的下载:AEF for MYSQL
相关文章推荐
- ADO.NET Entity framework 连接MySql 提示The specified store provider cannot be found in the configuration
- ADO.NET Entity Framework支持多Provider
- error 0152: No Entity Framework provider found for the ADO.NET provider with invariant name 'System.
- 解决 No Entity Framework provider found for the ADO.NET provider
- EF Provider for Access/ODBC 以及ADO.Net Entity Framework 与Linq to SQL的比较和适用场景:
- [ADO.Net] ADO.NET Entity Framework To MySql 简单测试配置
- No Entity Framework provider found for the ADO.NET provider with invariant
- EF Provider for Access/ODBC 以及ADO.Net Entity Framework 与Linq to SQL的比较和适用场景
- SQLite的ADO.NET Provider支持ADO.NET Entity Framework
- No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlClie
- mysql 开始支持Ado.net Entity Framework了
- Mysql ADO.NET Entity Framework
- 关于ADO.NET Entity Framework的信息
- 首次接觸 ADO.NET Entity Framework
- Ado.net Entity Framework实体转换成JSON
- 如何得到ADO.NET Entity Framework生成的SQL
- ADO.NET Entity Framework 学习(1)
- LINQ to SQL和ADO.NET Entity Framework之间的抉择
- ADO.NET Entity Framework创建 Course Manager 应用程序(实体框架快速入门)
- ADO.NET Entity Framework 一个简单数据绑定例子