代码改变世界

如何利用EdmGen 在Visual Studio 2010中实现PostgreSql的实体框架设计.

2012-09-08 00:30  yezhi  阅读(492)  评论(0)    收藏  举报

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实体框架的过程:

1、去下载Npgsql的最新版

下载后解压到一个文件夹,例如C:\temp。

2、进入Visual studio 2010 命令行模式,运行以下两个命令,将库注册到GAC中。

gacutil -i c:\temp\npgsql.dll
gacutil -i c:\temp\mono.security.dll

3、更新 Machine.Config

我更新的目录为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" />
(注意版本号对应)

4、使用EdmGen生成实体框架文件

找到 EdmGen (.net 3.5及以上才会有)如果是VS命令行模式,则可直接运行,在DOS命令符下则到相应的目录中执行。

到相应的项目目录,运行以下命令:
edmgen /mode:FullGeneration /provider:Npgsql
/connectionstring:"Server=主机地址;Port=5432;UserId=用户名;Password=密码;
Database=数据库名" /project:WpfApplication1
(以上是命令中需要将中文部分替换为实际值)

此时生成了五个文件。

5、合并实体框架文件

到网上下载edmgen2,可以利用该命令将将三个模型文件合并成一个文件,我用了以下命令:
edmgen2 /ToEdmx 文件名.csdl 文件名.msl 文件名.ssdl
这时会自动生成了“文件名.edmx的文件”!

6、完成实体框架

打开Visau Studio 2010,将上述edmx文件添加到项目中!这时VS会自动生成“文件名.Designer.cs”文件!

7、修改app.config(若是ASP.net则修改web.config)

在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的实体框架就可以用了!

http://eeblog.net/node/69