Как использовать LINQ-to-Entities для вставки данных в определенную таблицу? - PullRequest
5 голосов
/ 08 февраля 2011

Вопрос: что такое код LINQ-to-Entity для вставки заказа для конкретного клиента?

enter image description here

Обновление

Вот решение (см. Один из представленных ответов ниже для более чистого решения):

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();                        
}

Ответы [ 4 ]

3 голосов
/ 08 февраля 2011

Обратите внимание, что Заказ имеет свойство Customer.Вам не нужно добавлять Заказ клиенту - вы можете сделать это наоборот.Таким образом, вместо создания нового клиента, получите клиента с помощью Linq, а затем добавьте его в свой новый заказ.

using (OrderDatabase ctx = new OrderDatabase())
{
    ctx.AddOrder(new Order()
    {
        OrderQuantity = 2,
        OrderDescription = "Widgets",
        Customer = ctx.Customers.First<Customer>(c => c.CustomerId == yourId)
    });
    ctx.SaveChanges();
}
3 голосов
/ 08 февраля 2011

Ваш код не за горами.Просто измените вторую строку следующим образом:

Customer customer = ctx.Customer.FirstOrDefault(c => c.FirstName == "Bobby");
if (customer != null)
{
    //...

Просто замените c.FirstName == "Bobby" на что-то, что может точно идентифицировать клиента, которого вы ищете (например, c.Id == customerID, если вы уже знаете, какой идентификаторесть).

1 голос
/ 08 февраля 2011

Я не понимаю, в чем проблема, точно.

var mycustomer = context.Customers.Where(x => x.id == 100).FirstOrDefault();
if(mycustomer != null)
{
  mycustomer.Orders.Add(myorder); 
}
context.SaveChanges();
0 голосов
/ 08 февраля 2011

L2E в настоящее время не поддерживает операции на основе множеств (обновление без выбора).См. Использование linq для генерации прямого обновления без выбора

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...