VS2010的数据库连接工具已经不支持SQL Server2000了,自然也就无法用可视化的方法使用Entity Framework。最近因为需要对两个老系统进行改造,用的都是2000数据库,第一个因为比较简单,所以我直接把数据库升级到2005 ,然后修改系统配置。但是第二个升级会比较麻烦,而我又想用Entity Framework,最终在一个老外的博客上找到了一个方法,原文地址:http://www.skonet.com/Articles_Archive/How_To_Use_Entity_Framework_4_With_Visual_Studio_2010_and_SQL_Server_2000.aspx 。
下面我来详细介绍一下步骤。 1.用VS2010新建一个项目,为简单起见建了个控制台项目; 2.在项目中新建一个ADO.NET实体数据模型,选择空模型,名称设为MyModel,如图:
3.下载以下xml文件:http://www.skonet.com/uploadedFiles/Code/BaseEntityModel.edmx.xml ; 4.右击项目中的MyModel.edmx选择打开方式->XML(文本)编辑器
;
5.复制第3步中下载的文件内容全部替换4中的内容; 6.Ctrl+F把所有%DB_NAME% 替换成MyModel,共6处替换,替换完成后保存关闭该页,不关闭后面可能会出问题; 7.在项目中新建一个配置文件App.config,把以下配置节复制到App.config, providerName="System.Data.EntityClient" /> 8.把配置中的所有%DB_NAME%替换成MyModel,共5处替换,修改%DB_HOST_NAME%为你的数据库实例名,例如我的安装实例名为SQL2000,就应该是Data Source=.\SQL2000,如果是默认实例安装就是Data Source=. ;当然也可以是远程的服务器; 9.Initial Catalog=%DB_NAME% 这里的%DB_NAME% 改成你要连接的库的名称(在第8步中已经被替换成MyModel了,如果你库的名称也为MyModel则不用改),例如我要连接的库的名称是fit_net
,Initial Catalog=fit_net ; 10.替换%DB_USER% 为你的数据库登录名,例如我的为sa,替换%DB_USER_PWD%为你的数据库登录密码,例如我的为sa,User>配置完成后如下图 :
11.双击直接打开MyModel.edmx(设计视图模式打开),右击页面选择从数据库更新模型,就可以直接连上2000数据库了,而不需要用VS2010先进行可视化的连接(想连接你也连接不上,除非用VS2008,当然这不是这里要解决问题的方法);
表都出来了,在这里选择你想映射的表:
经测试,同样支持“添加代码生成项”,想支持POCO的可以继续以下操作(如果你用的是EF4.1以上版本):
(注:要使用这个功能需要安装额外的插件,比ObjectContext更轻量,这里不作介绍。)
(注:我习惯用一样的名称)
(整个项目就是这样);
(生成的类很简单,没有传统edmx里那些臃肿的代码,支持持久化透明。) 最后总结一下: 1.能用2005以上版本数据库就不要用2000; 2.如果老系统用的是2000,但升级比较方便的话最好升级到2005以上版本; 3.如果实在不方便升级,最后再考虑这种方法,Entity Framework对2000的支持并不是特别好,即使能连上可能有些功能也没法用,用的时候小心。常用的功能没问题,可以避免写大量的代码,但如果发现有些功能无法实现,最好手写代码,已经不算麻烦了; 4.相信我,总会有问题的,墨菲定律:如果一件事有一定的几率变得更糟,那它一定会变得更糟。
|