EntityFramework+Wcf 模板 for CodeSmith
原创模板,转载请注明地址
EntityFramework+Wcf模板使用说明
1. 目录说明
|
通用分页查询方法类生成模板 |
Wcf服务文件*.svc生成模板 |
|
Wcf服务接口文件生成模板 |
|
主模板文件 |
|
通用分页存储过程 |
|
Wcf服务.cs文件生成模板 |
|
Wcf服务数据库操作逻辑类生成模板 |
|
Wcf服务客户端调用类生成模板 |
|
Wcf服务配置文件生成模板 |
1. 使用说明
1.1. 系统项目组成
|
解决方案文件 |
服务测试项目 |
|
Ado.net实体数据模型层 |
|
Wcf服务数据库操作逻辑层 |
|
Wcf服务层 |
|
Wcf服务接口实现层 |
1.2. 模板使用步骤
第一步:
建立如下结构解决方案
在MyNamespace.Service.data项目中,添加Ado.net实体数据模型(*.edmx),并重命名实体容器名称(entities)。
步骤如图:
选择从数据库生成,点击下一步。
选择或新建连接,勾选【是】和【将App.Config…】,并点击下一步。
选择【表】、【视图】、【存储过程】,填写【模型命名空间】并点击完成。
修改实体容器名称。
第二步:
打开主模板文件,如下图所示,
1) 填写输出目录(outputdirectory)
2) 填写实体容器名称(entities),此名称在Ado.net实体数据模型属性中自定义
3) 填写命名空间(namespace)
4) 选择需要生成的表(tables)
点击生成按钮(generate),输出内容:
表示生成成功。
第三步:
- 将MyNamespace.Service.entity下的文件和根目录下的Class_Base.cs放入MyNamespace.Service.entity项目,并添加引用MyNamespace.Service.data和System.Data.Entity。
- 将MyNamespace.Service.host下的文件放入MyNamespace.Service.host项目,并添加引用MyNamespace.Service.service。
- 将MyNamespace.Service.service下的文件放入MyNamespace.Service.service项目,并添加引用System.ServiceModel、System.Data.Entity和MyNamespace.Service.data,MyNamespace.Service.entity。
第四步:
将生成文件根目录下的Web.config文件放入MyNamespace.Service.host项目,编辑该文件内容,如下图所示:
将注释配置节,替换为Ado.net实体数据模型(*.edmx)项目中App.config中的connectionstring内容。其中的system.serviceModel节服务配置内容,可自行根据项目需求修改。
第五步:
发布wcf服务。
右键点击MyNamespace.Service.host项目,选择【发布】,将服务发布到IIS,以便Web应用程序中调用。
第六步:
将MyNamespace.Web.Wcf下的文件放入Web应用程序下调用wcf服务的项目中,并为该项目添加服务引用,并将命名空间修改为ServiceReference_表名的格式,修改高级选项,将集合类型选为System.Collections.Generic.List后点击确定。
第七步:
将模板根目录中的proc_pager.sql存储过程导入数据库。
第八步:
在Web应用程序中添加MyNamespace.Web.Wcf引用,并调用MyNamespace.Web.Wcf中的方法,并且将MyNamespace.Web.Wcf项目下的app.config中的<system.serviceModel>配置节内容复制到Web应用程序项目下Web.config中。
2. 备注说明
- 此模板所生成方法仅限通用增、删、改、分页查询等方法,可根据项目需求自行修改。
- .NET版本为4.0,IIS版本为7.0(Win7旗舰版内置),使用VS2010,SqlServer2008R2,其余版本未作测试。
- 此模板根据个人项目习惯修改而来,如不能满足需求,请自行修改。
- 出现错误:
解决办法:
适当修改MyNamespace.Web.Wcf项目下的app.config中的maxReceivedMessageSize和maxBufferSize属性值为更大值。
5.出现错误:
解决办法:
适当修改MyNamespace.Web.Wcf项目下的app.config中的readerQuotas配置节中的maxDepth属性为更大值。
6.出现错误:
解决办法:
适当修改MyNamespace.Web.Wcf项目下的app.config中的readerQuotas配置节中的maxArrayLength属性为更大值。
7.关于Demo:
参考demo文件夹下的UsingEFT,包含两个解决方案,Liang.UseEFT.Service为wcf服务端,WebEFT为web调用端。