Example #1
0
        public void Setup_LinqToSqlInsert07()
        {
            Northwind db = CreateDB();
            var orderDetails =
                 from o in db.OrderDetails
                 where o.Order.CustomerID == "WARTH"
                 select o;

            var order =
                (from o in db.Orders
                 where o.CustomerID == "WARTH"
                 select o).FirstOrDefault();

            if (!orderDetails.Any() || order == null)
            {
                var o = new Order { CustomerID = "WARTH", Employee = db.Employees.First() };
                o.OrderDetails.Add(new OrderDetail { Discount = 0.1f, Quantity = 1, Product = db.Products.First(p => p.ProductID % 2 == 0) });
                o.OrderDetails.Add(new OrderDetail { Discount = 0.2f, Quantity = 1, Product = db.Products.First(p => p.ProductID % 2 != 0) });
                db.Orders.InsertOnSubmit(o);
                db.SubmitChanges();
            }
        }
Example #2
0
 private void detach_Orders(Order entity)
 {
     this.SendPropertyChanging();
     entity.Employee = null;
 }
Example #3
0
 private void attach_Orders(Order entity)
 {
     this.SendPropertyChanging();
     entity.Employee = this;
 }
 public void AddRange()
 {
     var db = CreateDB();
     var customer = db.Customers.First();
     int beforeCount = customer.Orders.Count;
     var order = new Order();
     customer.Orders.AddRange(new Order[] { order, new Order() });
     Assert.AreEqual(beforeCount + 2, customer.Orders.Count);
     customer.Orders.AddRange(new Order[] { new Order(), order }); // one is existing -> not added
     Assert.AreEqual(beforeCount + 3, customer.Orders.Count);
 }
 public void IList_Add()
 {
     var db = CreateDB();
     var customer = db.Customers.First();
     var order = new Order();
     ((IList)customer.Orders).Add(order);
     ((IList)customer.Orders).Add(order); // raises ArgumentOutOfRangeException for duplicate
 }
Example #6
0
        public void LinqToSqlInsert11()
        {
            // 通常,通过从其他层反序列化
            // XML 获取要附加的实体。
            // 此示例使用 LoadWith 在一个查询中预先加载客户和订单,
            //并禁用延迟加载。
            Customer cust = null;
            using (Northwind tempdb = new Northwind(connString))
            {
                DataLoadOptions shape = new DataLoadOptions();
                shape.LoadWith<Customer>(c => c.Orders);
                // 加载第一个客户实体及其订单。
                tempdb.LoadOptions = shape;
                tempdb.DeferredLoadingEnabled = false;
                cust = tempdb.Customers.First(x => x.CustomerID == "ALFKI");
            }

            Console.WriteLine("Customer {0}'s original phone number {1}", cust.CustomerID, cust.Phone);
            Console.WriteLine();

            foreach (Order o in cust.Orders)
            {
                Console.WriteLine("Customer {0} has order {1} for city {2}", o.CustomerID, o.OrderID, o.ShipCity);
            }

            Order orderA = cust.Orders.First();
            Order orderB = cust.Orders.First(x => x.OrderID > orderA.OrderID);

            using (Northwind db2 = new Northwind(connString))
            {
                // 将第一个实体附加到当前数据上下文,以跟踪更改。
                db2.Customers.Attach(cust);
                // 附加相关订单以进行跟踪; 否则将在提交时插入它们。
                db2.Orders.AttachAll(cust.Orders.ToList());

                // 更新客户。
                cust.Phone = "2345 5436";
                // 更新第一个订单。
                orderA.ShipCity = "Redmond";
                // 移除第二个订单。
                cust.Orders.Remove(orderB);
                // 创建一个新订单并将它添加到客户。
                Order orderC = new Order() { ShipCity = "New York" };
                Console.WriteLine("Adding new order");
                cust.Orders.Add(orderC);

                //现在提交所有更改
                db2.SubmitChanges();
            }

            // 验证是否按预期应用了更改。
            using (Northwind db3 = new Northwind(connString))
            {
                Customer newCust = db3.Customers.First(x => x.CustomerID == "ALFKI");
                Console.WriteLine("Customer {0}'s new phone number {1}", newCust.CustomerID, newCust.Phone);
                Console.WriteLine();

                foreach (Order o in newCust.Orders)
                {
                    Console.WriteLine("Customer {0} has order {1} for city {2}", o.CustomerID, o.OrderID, o.ShipCity);
                }
            }

            CleanupInsert11();
        }
Example #7
0
partial         void InsertOrder(Order instance);
Example #8
0
 private void detach_Orders(Order entity)
 {
     this.SendPropertyChanging();
     entity.Customer = null;
     this.SendPropertyChanged("Orders");
 }
		public void Orders_Detach(Order entity)
		{
			entity.Employee = null;
		}
		public void Orders_Attach(Order entity)
		{
			entity.Employee = this;
		}
		public void Orders_Detach(Order entity)
		{
			entity.Customer = null;
		}
		public void Orders_Attach(Order entity)
		{
			entity.Customer = this;
		}
		private void Orders_Detach(Order entity)
		{
			this.SendPropertyChanging();
			entity.Customer = null;
		}
		private void Orders_Attach(Order entity)
		{
			this.SendPropertyChanging();
			entity.Shipper = this;
		}
Example #15
0
 private void detach_Orders(Order entity)
 {
     this.SendPropertyChanging();
     entity.Shipper = null;
 }
Example #16
0
 private void attach_Orders(Order entity)
 {
     this.SendPropertyChanging();
     entity.Customer = this;
 }
Example #17
0
        private void Cleanup70() {
            SetLogging(false);

            Order order = new Order()
                          {
                              CustomerID = "WARTH",
                              EmployeeID = 3,
                              OrderDate = new DateTime(1996, 7, 26),
                              RequiredDate = new DateTime(1996, 9, 6),
                              ShippedDate = new DateTime(1996, 7, 31),
                              ShipVia = 3,
                              Freight = 25.73M,
                              ShipName = "Wartian Herkku",
                              ShipAddress = "Torikatu 38",
                              ShipCity = "Oulu",
                              ShipPostalCode="90110",
                              ShipCountry = "Finland"
                          };

                              //Order, Cus, Emp, OrderD, ReqD, ShiD, ShipVia, Frei, ShipN, ShipAdd, ShipCi, ShipReg, ShipPostalCost, ShipCountry
                              //10266	WARTH	3	1996-07-26 00:00:00.000	1996-09-06 00:00:00.000	1996-07-31 00:00:00.000	3	25.73	Wartian Herkku	Torikatu 38	Oulu	NULL	90110	Finland

            OrderDetail orderDetail = new OrderDetail()
                                      {
                                          ProductID = 12,
                                          UnitPrice = 30.40M,
                                          Quantity = 12,
                                          Discount = 0.0F
                                      };
            order.OrderDetails.Add(orderDetail);

            db.Orders.InsertOnSubmit(order);
            db.SubmitChanges();
        }
Example #18
0
partial         void DeleteOrder(Order instance);
Example #19
0
        public void LinqToSqlInsert11()
        {
            // Typically you would get entities to attach from deserializing
            // XML from another tier.
            // This sample uses LoadWith to eager load customer and orders
            // in one query and disable deferred loading.
            Customer cust = null;
            using (Northwind tempdb = new Northwind(connString))
            {
                DataLoadOptions shape = new DataLoadOptions();
                shape.LoadWith<Customer>(c => c.Orders);
                // Load the first customer entity and its orders.
                tempdb.LoadOptions = shape;
                tempdb.DeferredLoadingEnabled = false;
                cust = tempdb.Customers.First(x => x.CustomerID == "ALFKI");
            }

            Console.WriteLine("Customer {0}'s original phone number {1}", cust.CustomerID, cust.Phone);
            Console.WriteLine();

            foreach (Order o in cust.Orders)
            {
                Console.WriteLine("Customer {0} has order {1} for city {2}", o.CustomerID, o.OrderID, o.ShipCity);
            }

            Order orderA = cust.Orders.First();
            Order orderB = cust.Orders.First(x => x.OrderID > orderA.OrderID);

            using (Northwind db2 = new Northwind(connString))
            {
                // Attach the first entity to the current data context, to track changes.
                db2.Customers.Attach(cust);
                // Attach the related orders for tracking; otherwise they will be inserted on submit.
                db2.Orders.AttachAll(cust.Orders.ToList());

                // Update the customer.
                cust.Phone = "2345 5436";
                // Update the first order.
                orderA.ShipCity = "Redmond";
                // Remove the second order.
                cust.Orders.Remove(orderB);
                // Create a new order and add it to the customer.
                Order orderC = new Order() { ShipCity = "New York" };
                Console.WriteLine("Adding new order");
                cust.Orders.Add(orderC);

                //Now submit the all changes
                db2.SubmitChanges();
            }

            // Verify that the changes were applied a expected.
            using (Northwind db3 = new Northwind(connString))
            {
                Customer newCust = db3.Customers.First(x => x.CustomerID == "ALFKI");
                Console.WriteLine("Customer {0}'s new phone number {1}", newCust.CustomerID, newCust.Phone);
                Console.WriteLine();

                foreach (Order o in newCust.Orders)
                {
                    Console.WriteLine("Customer {0} has order {1} for city {2}", o.CustomerID, o.OrderID, o.ShipCity);
                }
            }

            CleanupInsert11();
        }
Example #20
0
partial         void UpdateOrder(Order instance);
 public void Add()
 {
     var db = CreateDB();
     var customer = db.Customers.First();
     int beforeCount = customer.Orders.Count;
     var order = new Order();
     customer.Orders.Add(order);
     Assert.AreEqual(beforeCount + 1, customer.Orders.Count, "#3");
     customer.Orders.Add(order); // do not actually add
     Assert.AreEqual(beforeCount + 1, customer.Orders.Count, "#4");
 }