2009-05-26 30 views

cevap

2
AdventureWorksDataContext db = new AdventureWorksDataContext(); 
db.Log = Console.Out; 

// Get hte first customer record 
Customer c = from cust in db.Customers select cust where id = 5; 
Console.WriteLine(c.CustomerType); 
c.CustomerType = 'I'; 
db.SubmitChanges(); // Save the changes away 
55

LINQ sorgu aracı (Q = sorgu) - yani sadece tek bir sıra güncellemek için sihirli LINQ yolu LINQ- durumunda ((nesne yönelimli) veri bağlamında vasıtasıyla olması dışında, orada to-SQL).

using(var ctx = new FooContext()) { 
    var obj = ctx.Bars.Single(x=>x.Id == id); 
    obj.SomeProp = 123; 
    ctx.SubmitChanges(); 
} 

Veya TSQL aynı yapar bir SP yazma ve veri-bağlam içinden SP maruz: Verileri güncellemek için, onu dışarı getir kaydını güncellemek ve değişiklikleri göndermeniz gerekmektedir

daha detaylı bilgi yokluğunda
using(var ctx = new FooContext()) { 
    ctx.UpdateBar(id, 123); 
} 
+0

@Mathieu - Eğer 200 özelliklerin değerlerini tahmin etse öneriyorsunuz? Onlar bir yerden gelmek zorundalar ... –

+0

Üzgünüm, burada gösterilmeyen bir şey vardı, benim kötü. – Mathieu

+0

mükemmel bir güncelleme örneği. teşekkürler arkadaşım –

3

:

using(var dbContext = new dbDataContext()) 
{ 
    var data = dbContext.SomeTable.SingleOrDefault(row => row.id == requiredId); 
    if(data != null) 
    { 
     data.SomeField = newValue; 
    } 
    dbContext.SubmitChanges(); 
} 
+0

Bu derleme değil; Nerede (önceden) bir IQueryable , bir SomeType –

+0

oops döndürecektir. Benim hatam. Düzeltildi. – spender

+2

Where (pred) .FirstOrDefault() ... –

18
public bool UpdateCustomerIno(CustomerInfo toUpdate) 
{ 
    bool successfullySaved = false; 

    var db = new DataClasses1DataContext(); 
    try 
    { 
     var dbCstInfo = db.CustomerInfos 
      .Where(w => w.CustomerID == toUpdate.CustomerID) 
      .SingleOrDefault(); 

     if (dbCstInfo != null) 
     { 
      dbCstInfo.FirstName = toUpdate.FirstName; 
      dbCstInfo.LastName = toUpdate.LastName; 
      db.SubmitChanges(); 
      successfullySaved = true; 
     } 
    } 
    catch { 
     successfullySaved = false; 
    } 
    return successfullySaved; 
} 
+7

Burada bir sorun değil (yeni bir veri bağlamı olduğu için), ancak DataContext'te kullanımı daha verimli kılan bir hata var (kimlik aramaları için) SingleODefault (predicate). Nereden (yüklem) .SingleOrDefault(). Ayrıca; Eğer başarısız olursa, neden bir istisna atmasına izin vermediniz? Oh, ve bu bir tek kullanımlık. –

8

Güncelleme

NorthwindDataContext db = new NorthwindDataContext(); 

Product product = db.Products.Single(p => p.ProductName == "Toy 1"); 

product.UnitPrice = 99; 
product.UnitsInStock = 5; 

db.SubmitChanges(); 

takın

Dim db As New NorthwindDataContext 

' Create New category and Products 
Dim category As New Category 
category.CategoryName = "Scott's Toys" 

Dim product1 As New Product 
category.ProductName = "Toy 1" 

Dim product2 As New Product 
category.ProductName = "Toy 2" 
+5

Görüntülerle uğraşmak neden bu kadar kolay ve kod düzeni özelliğini kullanmak için daha iyi bir şekilde aranabilir. –

+1

bunlar scott gu'nin blogundadır – sabbour

+1

evet doğruyunuz. bunlar oradan .. – Waheed

0

Bir hafta önce geçici bir çözüm buldu. Sen "ExecuteCommand" ile doğrudan komutları kullanabilirsiniz: ExecuteCommand açıklamada

MDataContext dc = new MDataContext(); 
var flag = (from f in dc.Flags 
        where f.Code == Code 
        select f).First(); 
_refresh = Convert.ToBoolean(flagRefresh.Value); 
if (_refresh) 
{ 
    dc.ExecuteCommand("update Flags set value = 0 where code = {0}", Code); 
} 

, güncelleştirmek istediğiniz belirli kayıt için değerle doğrudan sorgu gönderebilir.

value = 0 -> 0, kaydın yeni değeridir;

code = {0} ->, filtre değerini göndereceğiniz alandır;

Kod -> alanın yeni değeridir;

Umarım bu referans yardımcı olur.

+2

Neden ExecuteCommand'ı güncelleştirmek için kullanın !! Sadece nesneyi güncelleyebildiğiniz ve SubmitChanges'i arayabildiğinizde bunu yapmak biraz garip görünüyor. – DazManCat

2
DataClassesDataContext dc = new DataClassesDataContext(); 

FamilyDetail fd = dc.FamilyDetails.Single(p => p.UserId == 1); 

fd.FatherName=txtFatherName.Text; 
     fd.FatherMobile=txtMobile.Text; 
     fd.FatherOccupation=txtFatherOccu.Text; 
     fd.MotherName=txtMotherName.Text; 
     fd.MotherOccupation=txtMotherOccu.Text; 
     fd.Phone=txtPhoneNo.Text; 
     fd.Address=txtAddress.Text; 
     fd.GuardianName=txtGardianName.Text; 

     dc.SubmitChanges();