Reputation: 80232
Question: what is the LINQ-to-Entity code to insert an order for a specific customer?
Update
Here is the a solution (see one of the submitted answers below for a much cleaner solution):
using (OrderDatabase ctx = new OrderDatabase())
{
// Populate the individual tables.
// Comment in this next line to create a new customer/order combination.
// Customer customer = new Customer() { FirstName = "Bobby", LastName = "Davro" };
// Comment in this line to add an order to an existing customer.
var customer = ctx.Customers.Where(c => c.FirstName == "Bobby").FirstOrDefault();
Order order = new Order() { OrderQuantity = "2", OrderDescription = "Widgets" };
// Insert the individual tables correctly into the hierarchy.
customer.Orders.Add(order);
// Add the complete object into the entity.
ctx.Customers.AddObject(customer);
// Insert into the database.
ctx.SaveChanges();
}
Upvotes: 4
Views: 27951
Reputation: 28272
I don't get what the problem is, exactly.
var mycustomer = context.Customers.Where(x => x.id == 100).FirstOrDefault();
if(mycustomer != null)
{
mycustomer.Orders.Add(myorder);
}
context.SaveChanges();
Upvotes: 1
Reputation: 14447
Notice that Order has a Customer property. You don't have to add the Order to the Customer -- you can do it the other way around. So, instead of creating a new Customer, get the Customer using Linq, then add it to your new Order.
using (OrderDatabase ctx = new OrderDatabase())
{
ctx.AddOrder(new Order()
{
OrderQuantity = 2,
OrderDescription = "Widgets",
Customer = ctx.Customers.First<Customer>(c => c.CustomerId == yourId)
});
ctx.SaveChanges();
}
Upvotes: 3
Reputation: 30715
Your code isn't far off. Just change your second line to read as follows:
Customer customer = ctx.Customer.FirstOrDefault(c => c.FirstName == "Bobby");
if (customer != null)
{
//...
Just replace the c.FirstName == "Bobby"
with something that can strongly identify the customer you're looking for (e.g. c.Id == customerID
if you already know what the ID is).
Upvotes: 3
Reputation: 24685
L2E does not support set-based operations currently (update without select). See Use linq to generate direct update without select
Upvotes: 0