《Entity Framework 6 Recipes》中文翻译——第九章EntityFramework在N层架构程序中的应用(五)

问题

  你有一个通过WCF获取的对象,你想把它删除掉

解决方案

  你有如下的模型

  

 

  我们的模型代表了发票Invoice上的付款Payment。在我们的应用程序中,我们实现了一个WCF服务处理来自客户端的数据库交互。在我们的情况下,我们要使用服务删除一个支付对象实体。
保持尽可能简单的解决方案,我们将建立一个WCF服务库并定义模型里面按照以下步骤:

  1、新建WCF服务库程序,命名Recipe5

  2、右键单击recipe5项目,并选择“添加新项。选择数据➤ADO.NET实体数据模型。使用向导添加一个模型包含发票和付款表。为了简单起见,我们已经删除了发票实体上的付款导航属性。(右键单击实体框架设计器中的发票实体中的付款导航属性,并单击“删除”。)右键单击支付实体中的时间戳属性,选择属性,并设置它的并发模式来固定。这样做将从事并发控制中的时间戳属性,发送值作为在随后的WHERE子句的SQL UPDATE和DELETE操作。

  3、更改Iservice.cs文件,如下所示:

[ServiceContract]
    public interface IService1
    {
        [OperationContract]
        Payment InsertPayment();

        [OperationContract]
        void DeletePayment(Payment payment);
    }

  4、修改Servics.cs文件如下所示:

 public class Service1 : IService1
    {
        public void DeletePayment(Payment payment)
        {
            using (var context = new School5Entities())
            {
                context.Entry(payment).State = EntityState.Deleted;
                context.SaveChanges();
            }

        }

        public Payment InsertPayment()
        {
            using (var context = new School5Entities())
            {
                // delete the previous test data
                context.Database.ExecuteSqlCommand("delete from Payment");
                context.Database.ExecuteSqlCommand("delete from Invoice");
                var payment = new Payment
                {
                    Amount = 99.95M,
                    Invoice = new Invoice { Description = "Auto Repair" }
                };
                context.Payments.Add(payment);
                context.SaveChanges();
                return payment;
            }
        }

    }

  5、为了测试我们的服务,在解决方案中添加一个新的控制台应用程序项目作为我们的客户端,。通过右键单击客户端项目为客户端添加服务引用,并选择“添加服务引用”。你可能需要用鼠标右键单击服务项目并选择“调试➤启动实例之前,您可以添加在客户服务参考启动您的服务的实例。

class Program
    {
        static void Main(string[] args)
        {
            var client = new Service1Client();
            var payment = client.InsertPayment();
            client.DeletePayment(payment);

        }
    }

 

posted on 2016-07-25 15:03  yunxia_云霞  阅读(160)  评论(0编辑  收藏  举报