zoukankan      html  css  js  c++  java
  • 《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);
    
            }
        }
  • 相关阅读:
    时间复杂度和空间复杂度
    七、vue计算属性
    六、vue侦听属性
    四、vue派发更新
    五、vue nextTick
    三、vue依赖收集
    二、vue响应式对象
    递归
    链表
    TypeScript类型定义文件(*.d.ts)生成工具
  • 原文地址:https://www.cnblogs.com/yunxiaguo/p/5703107.html
Copyright © 2011-2022 走看看