ADO.net实体框架已经成为微软数据访问处理方案中的首选方案了,但是Visual Studio 2010中若使用实体框架,则只支持Sql Server的生成和更新。虽然Ado.net实体框架也支持Oracle,Mysql,PostgreSql等数据库,但是不能通过 VS2010生成,必须通过第三方提供的软件进行。举例PostgreSql来说,我们可以安装Devart Software提供的DotConnect for PostgreSQL,安装好后就可以使用PostgreSQL的实体框架生成了。但DotConnect for PostgreSQL是收费软件,安装后超过使用期后开发的软件就会报过期异常,而免费版的 DotConnect for PostgreSQL经我测试并不支持实体框架的生成。那么有没有更好的直接利用开源软件实现实体框架模型的 生成的,以下就是我利用开源的npgsql实现PostgreSQL实体框架的过程:
下载后解压到一个文件夹,例如C:\temp。
gacutil -i c:\temp\npgsql.dll
gacutil -i c:\temp\mono.security.dll
我更新的目录为C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319
\Config,可以选用对应的.net框架目录进行更新。
在 ‘DbProviderFactories’一节中清加以下内容:
<add name="Npgsql Data Provider" invariant="Npgsql" support="FF" description=".Net Framework Data Provider for Postgresql Server" type="Npgsql.NpgsqlFactory, Npgsql, Version=2.0.11.92, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" />
(注意版本号对应)
找到 EdmGen (.net 3.5及以上才会有)如果是VS命令行模式,则可直接运行,在DOS命令符下则到相应的目录中执行。
到相应的项目目录,运行以下命令:
edmgen /mode:FullGeneration /provider:Npgsql
/connectionstring:"Server=主机地址;Port=5432;UserId=用户名;Password=密码;
Database=数据库名" /project:WpfApplication1
(以上是命令中需要将中文部分替换为实际值)
此时生成了五个文件。
到网上下载edmgen2,可以利用该命令将将三个模型文件合并成一个文件,我用了以下命令:
edmgen2 /ToEdmx 文件名.csdl 文件名.msl 文件名.ssdl
这时会自动生成了“文件名.edmx的文件”!
打开Visau Studio 2010,将上述edmx文件添加到项目中!这时VS会自动生成“文件名.Designer.cs”文件!
在app.conifg中我们添加以下内容:
<add name="WpfApplication1Context" providerName="System.Data.EntityClient" connectionString="metadata=res://*/文件名.csdl|res://*/文件名.ssdl|res://*/文件名.msl;provider=Npgsql;provider connection
string='Server=服务器地址;Port=5432;User
Id=用户名;Password=密码;Database=数据库名;enlist=true;'" />
好了,现在PostgreSQL的实体框架就可以用了!
添加新评论