WCF第三个示范,第四个示范之二

             上接WCF学习之旅—第多少个示范之一(二107)

 

二、WCF服务端应用程序

伍、在项目BookMgr.Model创设实体类数据

先是步,创制WCF服务应用程序项目

第一步,安装Entity Framework

壹)  使用NuGet下载最新版的Entity Framework
6.一.三。在化解方案财富管理器中——>在品种BookMgr.Model上鼠标右键单击——>弹出2个菜系,选中“管理解决方案的NuGet程序包”,张开NuGet程序包管理分界面。如下图。
图片 1

2)      在NuGet程序包管理分界面中寻找Entity,找到最新版本Entity Framework,点击安装。如下图。
图片 2

三)      安装到位之后,如下图。
图片 3

 

开垦Visual Studio
20一伍,在菜单上点击文件—>新建—>项目—>WCF服务应用程序。在弹出分界面包车型客车“名称”对应的文本框中输入“SCF.WcfService”,然后点击“分明”开关。如下图。

其次步,创立实体数据模型

  1. 在“消除方案能源管理器”中运用鼠标右键,点击“BookMgr.Model”项目,在弹出美食做法上,依次选用“增多—》新建项。。。”
    图片 4

       2.
在“增多新项”对话框中,选用“数据”节点,然后选拔“ADO.NET
实体数据模型”项。

       三.在“名称”文本框中,输入
BookModel,然后采取“增添”开关。
图片 5

 

            4.
在实业数据模型向导中,在增选模型内容页上,选用“来自数据库的 EF
设计器”,然后再选用下一步开关。
图片 6

       5.
在“选用你的多寡连接”页上进行下列步骤之壹:

  • 万一下拉列表中包蕴到 Test
    示例数据库的数码连接,请选择该连接。
  • 要么选用“新建连接”按键来布置新数据连接。
    如下图。
    图片 7

          6.
在“连接属性”对话框中选拔相应的数据库服务器,输入用户名与密码,选择要使用的数据库。如下图。

图片 8

       柒.
只要数据库必要密码,请选择“是,在接连字符串中包涵敏感数据”选项按键,然后选用“下一步”开关。
你可以洞察一下底下两图中的数据连接的界别。

  • 图片 9
  • 八.
    在“选取数据库对象”页上,张开“表”节点、选中“客户”复选框,然后采用“实现”开关。

随着突显实人体模型型关系图,BookModel.edmx
文件也将丰裕到品种中。
图片 10

      九. 末尾生成的结果如下。

图片 11  

      10.现实代码如下。

  //用户实体
//------------------------------------------------------------------------------
// <auto-generated>
//     此代码已从模板生成。
//
//     手动更改此文件可能导致应用程序出现意外的行为。
//     如果重新生成代码,将覆盖对此文件的手动更改。
// </auto-generated>
//------------------------------------------------------------------------------


namespace BookMgr.Model
{
    using System;
    using System.Collections.Generic;   

    public partial class Books
    {

        public int BookID { get; set; }

        public string Category { get; set; }

        public string Name { get; set; }

        public int Numberofcopies { get; set; }

        public int AuthorID { get; set; }

        public decimal Price { get; set; }

        public System.DateTime PublishDate { get; set; }

        public string Rating { get; set; }

    }
}

 

图片 12

第二步 , 安装Entity Framework

一)  使用NuGet下载最新版的Entity Framework
陆.一.三。在化解方案财富管理器中——>在品种SCF.WcfService上鼠标右键单击——>弹出2个菜系,选中“管理消除方案的NuGet程序包”,展开NuGet程序包管理分界面。如下图。

 图片 13

贰)      在NuGet程序包管理分界面中检索
Entity,找到最新版本Entity Framework,点击安装。如下图。

 图片 14

叁)      安装到位之后,如下图。

 图片 15

 

 

第三步,创建 SCF.Common 项目

  1. 在菜单栏上,依次选拔“文件–>新建–>项目”,只怕正如图在“化解方案能源管理器”中采取鼠标右键,弹出快捷菜单。
    如下图。图片 16
  2. 在“加多新类型”对话框中,打开 “Visual
    C#”和“Windows”节点,然后选取“类库”模板。
  3. 在“名称”文本框中,输入
    SCF.Common,然后采取“显然”开关。 如下图。

 图片 17

  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();
            }
        }
    }

}

 

第6步,创造实体数据模型

  1. 在菜单栏上,依次选拔“文件”、“新建”、“项目”。

  2. 在“新建项目”对话框中,打开 “Visual
    C#”和“Winodws”节点,然后选取“类库”模板,在“名称”对话框中输入“SCF.Model”,然后点击鲜明按键。
    创立SCF.Model项目。如下图。

 图片 18

  
三.通过NuGet安装相关的机件,具体操作步骤参见第1步。如下图浅绿灰框中的组件。

 图片 19

     四. 在菜单栏上,依次采用“项目”、“加多新项”。

     5.
在“增添新项”对话框中,选拔“数据”节点,然后接纳“ADO.NET
实体数据模型”项。

     六. 在“名称”文本框中,输入
BookModel,然后选用“加多”开关。如下图。

 图片 20

      七. 在实体数据模型向导中,在选拔模型内容页上,选取“来自数据库的
EF 设计器”,然后再采取下一步按键。 如下图。

 图片 21

    8.
在“采纳你的数据连接”页上实施下列步骤之一:

  • 即使下拉列表中涵盖到 Test
    示例数据库的数额连接,请选拔该连接。
  • 要么选取“新建连接”开关来安顿新数据连接。
    如下图。

 图片 22

      9.
在“连接属性”对话框中选用相应的数据库服务器,输入用户名与密码,选拔要动用的数据库。如下图。

图片 23

    
10.纵然数据库需求密码,请采用“是,在接连字符串中含有敏感数据”选项开关,然后选取“下一步”开关。
你可以观测一下下边图中的数据连接。

图片 24

 

   1一.在“采纳你的本子”页上,选取“实体框架陆.x”选项开关,然后选拔“下一步”按键。

图片 25

说明

如果你已经按第二步中安装了具有WCF 服务的 Entity Framework 6 的最新版本,同时通过NuGet安装 WCF Data Services Entity Framework Provider 程序包,那么将不会出现此对话框,直接进入下一步。

 

    
1二.在“选取数据库对象”页上,展开“表”节点、选中“Books”复选框,然后选用“完毕”开关。

         
随即呈现实人体模型型关系图,BookModel.edmx 文件也将拉长到品种中。

 图片 26

一三.聊起底生成的结果如下。

 图片 27