2009-06-29 3 views
0

я смотрел на пример того, как сделать вставку в Linq к SQL и здесь было сказано:Проблема с вставкой LINQ to SQL. ,

NorthwindDataContext context = new NorthwindDataContext(); 
context.Products.Add(new Product(..)); 
context.SubmitChanges(); 

, но когда я смотрю на ниже, (в моем случае таблица является UserInfo), Таблица не имеет метода «Добавить»:

public System.Data.Linq.Table<UserInfo> UserInfos 
    { 
     get 
     { 
      return this.GetTable<UserInfo>(); 
     } 
    } 

любая подсказка, что я делаю неправильно здесь?

ответ

2

Вы должны использовать метод InsertOnSubmit:

NorthwindDataContext context = new NorthwindDataContext(); 
context.Products.InsertOnSubmit(new Product(..)); 
context.SubmitChanges(); 

Метод Add существует на членов EntitySet, в основном используется при добавлении дочерних объектов к родителю одного, например:

var category = new Category{ Name = "Breveages"}; 


category.Products.Add(new Product{ Name = "Orange Juice"}); 
category.Products.Add(new Product{ Name = "Tomato Juice"}); 
category.Products.Add(new Product{ Name = "Cola"}); 

//... 

context.Categories.InsertOnSubmit(category); 
             // This will insert the Category and 
             // the three Products we associated to. 

EDIT: Чтобы выполнить операции обновления, вам просто нужно получить объект, выполнив запрос или связав его, например:

var customer = context.Customers.Single(c => c.CustomerID == "ALFKI"); 

customer.ContactName = "New Contact Name"; 
context.SubmitChanges(); 

DataContext отслеживает изменения связанных сущностей и когда метод SubmitChanges называется, он обнаружит, что изменения, и генерировать оператор SQL Update за кулисы, чтобы сделать операцию обновления ...

+0

Благодарю . , это работает, но теперь я понял, что я не хочу добавлять новый, а скорее обновлять существующий. . Каков метод обновления существующей записи. – leora

+0

Продукт product = context.Products.Single (p => p.ProductID == 1); product.ProductName = "Kindle"; product.UnitPrice = 359.99m; context.SubmitChanges(); – jason

+0

Одна вещь, о которой вы должны быть осторожны, это объект DataContext. Когда вы обновляете, обязательно сначала получите объект из базы данных, а затем обновите его с помощью одного объекта DataContext. Если вы попытаетесь прикрепить объект одного DataContext к другому DataContext, то все ад сломается. – azamsharp

Смежные вопросы