Belirli bir kimliğe karşı LINQ'daki bir kaydı SQL'e nasıl güncelleyebilirim?LINQ to SQL kullanarak güncelleştirme
cevap
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
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ğundausing(var ctx = new FooContext()) {
ctx.UpdateBar(id, 123);
}
:
using(var dbContext = new dbDataContext())
{
var data = dbContext.SomeTable.SingleOrDefault(row => row.id == requiredId);
if(data != null)
{
data.SomeField = newValue;
}
dbContext.SubmitChanges();
}
Bu derleme değil; Nerede (önceden) bir IQueryable
oops döndürecektir. Benim hatam. Düzeltildi. – spender
Where (pred) .FirstOrDefault() ... –
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;
}
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. –
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"
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.
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
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();
- 1. linq to sql güncelleştirme standardı
- 2. Linq-to-SQL ToDictionary()
- 3. LINQ To SQL Paging
- 4. Linq-To-Sql Object
- 5. Linq To-SQL
- 6. Linq to SQL (-)
- 7. Linq To SQL ve
- 8. LINQ to SQL
- 9. Linq to SQL - sorgusu
- 10. Dinamik sorgu LINQ to SQL kullanarak
- 11. LINQ to "NOT IN" kullanarak SQL sorgu
- 12. Tek bir sütunu LINQ to SQL
- 13. Linq to SQL "beğenmediniz" operatörü
- 14. LINQ-To-SQL (IDENTITY INSERT)
- 15. Linq to SQL: optimizasyonu seç
- 16. LINQ to SQL ForeignKeyReferenceAlreadyHasValueException error
- 17. LINQ to SQL dizgileri enler
- 18. Linq to sql: orderby çalışmıyor
- 19. LINQ to SQL - dize dizisi
- 20. LINQ to SQL Designer Bug
- 21. LINQ-To-SQL, SQL Enjeksiyonlarını nasıl önler?
- 22. Linq to SQL - Geri üst n satırlar
- 23. Linq to SQL lambda üye ol
- 24. linq to sql için ikinci kayıt alma
- 25. Linq To Sql vs Entity Framework Performansı
- 26. Linq-to-sql İçermez veya İçermez?
- 27. linq to sql LoadYeni sınırlayıcı alanlar döndü
- 28. Linq-to-sql yardımını kullanarak gelişmiş veritabanı araması
- 29. LINQ to SQL/ADO.NET kullanarak yürütme planı nasıl alınır
- 30. Linq-to-SQL kullanarak yeni kayıtlar nasıl eklenir?
@Mathieu - Eğer 200 özelliklerin değerlerini tahmin etse öneriyorsunuz? Onlar bir yerden gelmek zorundalar ... –
Üzgünüm, burada gösterilmeyen bir şey vardı, benim kötü. – Mathieu
mükemmel bir güncelleme örneği. teşekkürler arkadaşım –