VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > C#教程 >
  • WCF学习之旅—第三个示例之三(二十九)

六、创建项目BookMgr.Service的WCF服务代码

     第一步、安装Entity Framework 6.1.3

    1)  安装过程同上一篇文章中类似。使用NuGet下载最新版的Entity Framework 6.1.3。在解决方案资源管理器中——>在项目BookMgr.Service上鼠标右键单击——>弹出一个菜单,选中“管理解决方案的NuGet程序包”,打开NuGet程序包管理界面。如下图。

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

   第二步、创建WCF服务代码

      1)  在“解决方案资源管理器”中使用鼠标右键,点击“BookMgr.Service”项目,在弹出菜单上,依次选择“添加—》WCF服务”

      2)  在“项名称”文本框中,输入 BookService,然后选择“确定”按钮。

       3) 删除同步生成的IBookService接口文件。

       4) 在“解决方案资源管理器中”中,定位BookService.svc.cs文件,双击在“代码编辑器”中打开,并编写如下代码。

复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using BookMgr.Contracts;
using BookMgr.Model;
using BookMgr.Common;
using System.Data.Entity; 

namespace BookMgr.Service
{
    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“BookService”。
    // 注意: 为了启动 WCF 测试客户端以测试此服务,请在解决方案资源管理器中选择 BookService.svc
// 或 BookService.svc.cs,然后开始调试。
    public class BookService :IBookService
    {

        BookEntities db = new BookEntities();
        public string Add(string mbook)
        {
            try
            {
                Books book = XMLHelper.DeSerializer<Books>(mbook);

                db.Books.Add(book);
                db.SaveChanges();

            }

            catch (Exception ex)
            {
                return ex.Message;

            }
            return "true";
        }
        public string Delete(string bookInfo)
        {
            try
            {
                Books book = XMLHelper.DeSerializer<Books>(bookInfo);

                db.Entry(book).State = EntityState.Deleted;
                db.SaveChanges();
            }

            catch (Exception ex)
            {

                return ex.Message;
            }

            return "true";
        }

        public void DoWork()
        {
        } 

        public string Edit(string mbook)
        {

            try
            {
                Books book = XMLHelper.DeSerializer<Books>(mbook);

                db.Entry(book).State = EntityState.Modified;
                db.SaveChanges();

            }
            catch (Exception ex)
            {           
//这里如果出现异常,则返回一个自定义的错误信息,用于进行调试,可以看到更详细的异常信息,方便定位问题。
                string reason = GetErrorMessage(ex);
                SQLError error = new SQLError("更新数据库操作", reason);
                throw new FaultException<SQLError>(error, new FaultReason(reason), new FaultCode("Edit"));
            }
            return "true";
        }
        public string Get(string Id)
        {
            int bookId = Convert.ToInt32(Id);
            Books book = db.Books.Find(bookId);
            string xml = XMLHelper.ToXML<Books>(book);
            return xml;
            //throw new NotImplementedException();
        } 

        public string Search(string Category, string searchString)
        {
            var cateLst = new List<string>();
            var cateQry = from d in db.Books
                          orderby d.Category
                          select d.Category;

            cateLst.AddRange(cateQry.Distinct());
            var books = from m in db.Books
                        select m;
 

            if (!String.IsNullOrEmpty(searchString))
            {

                books = books.Where(s => s.Name.Contains(searchString));
            }

            List<Books> list = null;
            if (string.IsNullOrEmpty(Category))
            {
                list = books.ToList<Books>();
                //return XMLHelper.ToXML<List<Books>>(list);

            }
            else
            {
                list = books.Where(x => x.Category == Category).ToList<Books>();
                //  return XMLHelper.ToXML<IQueryable<Books>>(books.Where(x => x.Category == Category));

            }
            return XMLHelper.ToXML<List<Books>>(list);
        }

        StringBuilder sb = new StringBuilder();

        /// <summary>
        /// 递归获取错误信息的内部错误信息,直到InnerException为null
        /// </summary>
        /// <param name="ex"></param>
        private string GetErrorMessage(Exception ex)
        {
            if (ex.InnerException != null)
            {
                sb.Append("InnerException:"+ex.Message + ",");
                GetErrorMessage(ex.InnerException);
            }
            else
            {
                sb.Append(ex.Message + ",");
            }
            return sb.ToString();
        } 

    }
}
复制代码

         5)  在“解决方案资源管理器”中从“BookMgr.Model”项目中的“App.Config”文件复制到“BookMgr.Service”项目中。如下图。

      6)  在菜单栏上,依次选择“调试”、“开始执行(不调试)”以运行服务。 此时将打开一个浏览窗口,并显示该服务的 XML 架构。如下图。

        7)  关闭浏览器窗口。

出处:https://www.cnblogs.com/chillsrc/p/6046645.html


相关教程