WCF学习之旅—WCF第二个示例(五)
WCF学习之旅目录
二、WCF服务端应用程序
第一步,创建WCF服务应用程序项目
打开Visual Studio 2015,在菜单上点击文件—>新建—>项目—>WCF服务应用程序。在弹出界面的“名称”对应的文本框中输入“SCF.WcfService”,然后点击“确定”按钮。如下图。
第二步 , 安装Entity Framework
1) 使用NuGet下载最新版的Entity Framework 6.1.3。在解决方案资源管理器中——>在项目SCF.WcfService上鼠标右键单击——>弹出一个菜单,选中“管理解决方案的NuGet程序包”,打开NuGet程序包管理界面。如下图。
2) 在NuGet程序包管理界面中搜索 Entity,找到最新版本Entity Framework,点击安装。如下图。
3) 安装完成之后,如下图。
第三步,创建 SCF.Common 项目
- 在菜单栏上,依次选择“文件-->新建-->项目”,或者如下图在“解决方案资源管理器”中使用鼠标右键,弹出快捷菜单。 如下图。
- 在“添加新项目”对话框中,展开 “Visual C#”和“Windows”节点,然后选择“类库”模板。
- 在“名称”文本框中,输入 SCF.Common,然后选择“确定”按钮。 如下图。
4. 在已经创建成功的SCF.Common项目中添加一个XMLHelper .CS文件,写如下代码。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Serialization; using System.IO; namespace SCF.Common { public class XMLHelper { /// <summary> /// 反序列化成对象 /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="filename">XML文件路径</param> /// <returns></returns> public static T ParseXML<T>(string filename) { T obj = default(T); XmlSerializer serializer = new XmlSerializer(typeof(T)); /* If the XML document has been altered with unknown nodes or attributes, handle them with the UnknownNode and UnknownAttribute events.*/ // A FileStream is needed to read the XML document. FileStream fs = new FileStream(filename, FileMode.Open); try { obj =(T) serializer.Deserialize(fs); } catch (System.Exception ex) { string s = ex.Message; throw ex; } finally { fs.Close(); } return obj; } /// <summary> /// 反序列化成对象 /// </summary> /// <param name="filename">XML文件路径</param> /// <param name="type">对象类型</param> /// <returns></returns> public static object ToObject(string filename,Type type) { object obj; XmlSerializer serializer = new XmlSerializer(type); FileStream fs = new FileStream(filename, FileMode.Open); try { obj = serializer.Deserialize(fs); } catch (System.Exception ex) { string s = ex.Message; throw ex; } finally { fs.Close(); } return obj; } /// <summary> /// 反序列化成对象 /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="data">XML数据对象字符串</param> /// <returns></returns> public static T DeSerializer<T>(string data) { T obj = default(T); XmlSerializer serializer = new XmlSerializer(typeof(T)); try { using (StringReader sr = new StringReader(data)) { XmlSerializer xz = new XmlSerializer(typeof(T)); obj = (T)serializer.Deserialize(sr); } } catch (System.Exception ex) { string s = ex.Message; throw ex; } return obj; } /// <summary> /// 创建XML文件 /// </summary> /// <param name="fullFileName">XML文件名</param> /// <param name="data">XML字符串</param> public static void CreateXML(string fullFileName, string data) { using (StreamWriter sw = new StreamWriter(fullFileName, false, Encoding.UTF8)) { sw.Write(data); } } /// <summary> /// 把对象转换成字符串 /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="t">对象实体</param> /// <returns></returns> public static string ToXML<T>(T t) { using (StringWriter sw = new StringWriter()) { XmlSerializer xz = new XmlSerializer(t.GetType()); xz.Serialize(sw, t); return sw.ToString(); } } } }
第四步,创建实体数据模型
- 在菜单栏上,依次选择“文件”、“新建”、“项目”。
- 在“新建项目”对话框中,展开 “Visual C#”和“Winodws”节点,然后选择“类库”模板,在“名称”对话框中输入“SCF.Model”,然后点击确定按钮。 创建SCF.Model项目。如下图。
3.通过NuGet安装相关的组件,具体操作步骤参见第一步。如下图中黄框中的组件。
4. 在菜单栏上,依次选择“项目”、“添加新项”。
5. 在“添加新项”对话框中,选择“数据”节点,然后选择“ADO.NET 实体数据模型”项。
6. 在“名称”文本框中,输入 BookModel,然后选择“添加”按钮。如下图。
7. 在实体数据模型向导中,在选择模型内容页上,选择“来自数据库的 EF 设计器”,然后再选择下一步按钮。 如下图。
8. 在“选择你的数据连接”页上执行下列步骤之一:
- 如果下拉列表中包含到 Test 示例数据库的数据连接,请选择该连接。
- 或者选择“新建连接”按钮来配置新数据连接。 如下图。
9. 在“连接属性”对话框中选择对应的数据库服务器,输入用户名与密码,选择要使用的数据库。如下图。
10.如果数据库需要密码,请选择“是,在连接字符串中包含敏感数据”选项按钮,然后选择“下一步”按钮。 你可以观察一下下面图中的数据连接。
11.在“选择你的版本”页上,选择“实体框架6.x”选项按钮,然后选择“下一步”按钮。
说明 |
如果你已经按第二步中安装了具有WCF 服务的 Entity Framework 6 的最新版本,同时通过NuGet安装 WCF Data Services Entity Framework Provider 程序包,那么将不会出现此对话框,直接进入下一步。 |
12.在“选择数据库对象”页上,展开“表”节点、选中“Books”复选框,然后选择“完成”按钮。
随即显示实体模型关系图,BookModel.edmx 文件也将添加到项目中。
13.最终生成的结果如下。
相关文章
- 【FAQ】应用内支付服务无法拉起支付页面常见原因分析和解决方法
- Java面试题之:raft 协议和 zab 协议区别
- 租房“免押金”大面积落地,年底租房人群迎来一点甜
- 简单描述 MySQL 中,索引,主键,唯一索引,联合索引 的区别,对数据库的性能有什么影响(从读写两方面)
- 面试官问:Stream 中的 map、peek、foreach 方法的区别?彻底懵了。。
- 广电5G:“农村包围城市”还是内容创新为王?
- 华为、苹果竞争未完,平板赛道再成舞台
- 月销10万+!长城汽车全面发力“森林式生态体系”结硕果
- 鲲鹏生态下,长沙“计算”产业再登新高度
- 盘点四大运营商的5G套餐亮点,国庆出游上车5G不用愁!
- 帮您总结了面试中常用的PHP函数,您不进来看看吗?
- 面试过程中Mysql数据库常被问到的问题详解
- 面向对象是面试时提问最多的吗?
- 几道很有代表性的PHP面试题,研究研究有助于面试加分
- 【404】你访问的页面需要关灯后查看!
- 摸鱼搞了个掘金数据监控桌面应用,还不快用起来!
- 这个实现不对,要的是excel里面的高亮重复项效果
- 精选Github计算机开源视觉项目
- 腾讯云大数据流计算 Oceanus 在 MySQL CDC Connector 的核心优化
- 网宿科技携手亚马逊云科技,助力云计算成为真正的生产力