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(); } }
private void detach_Orders(Order entity) { this.SendPropertyChanging(); entity.Employee = null; }
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 }
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(); }
partial void InsertOrder(Order instance);
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; }
private void detach_Orders(Order entity) { this.SendPropertyChanging(); entity.Shipper = null; }
private void attach_Orders(Order entity) { this.SendPropertyChanging(); entity.Customer = this; }
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(); }
partial void DeleteOrder(Order instance);
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(); }
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"); }