Как обновить запись по конкретному идентификатору в LINQ to SQL?Обновление с использованием LINQ to SQL
ответ
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 является инструментом запроса (Q = Запрос) - так что нет никакой волшебной LINQ способ обновить только одну строку, кроме как через (объектно-ориентированного) данных контекста (в случае LINQ- к-SQL). Для обновления данных, вам нужно получить его, обновить запись, и отправить изменения:
using(var ctx = new FooContext()) {
var obj = ctx.Bars.Single(x=>x.Id == id);
obj.SomeProp = 123;
ctx.SubmitChanges();
}
Или написать SP, который делает то же самое в TSQL, и разоблачить SP через данные контекста:
using(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();
}
Это не скомпилируется; Где (pred) вернет IQueryable
. Виноват. Исправленный. – spender
Вы можете использовать Single (pred) вместо 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;
}
Не проблема здесь (поскольку это новый контекст данных), но в DataContext есть ошибка, которая делает ее более эффективной для использования (для поиска идентичности) SingleODefault (предикат), чем Where (предикат) .SingleOrDefault(). Также; если это не удается, почему бы вам не дать ему исключение? О, и это IDisposable. –
Update
NorthwindDataContext db = new NorthwindDataContext();
Product product = db.Products.Single(p => p.ProductName == "Toy 1");
product.UnitPrice = 99;
product.UnitsInStock = 5;
db.SubmitChanges();
Вставка
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"
Я нашел обходной путь неделю назад. Вы можете использовать прямые команды с «ExecuteCommand
»:
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);
}
В ExecuteCommand
заявлении, вы можете отправить запрос непосредственно, со значением для конкретной записи, которую вы хотите обновить.
value = 0 -> 0 - новое значение для записи;
code = {0} -> это поле, в которое вы отправите значение фильтра;
Код -> - новое значение для поля;
Я надеюсь, что эта ссылка поможет.
Зачем использовать ExecuteCommand для обновления !!? Кажется немного странным, когда вы можете просто обновить объект и вызвать SubmitChanges. – 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
- 2. Обновление записи с использованием Linq-to-SQL
- 3. LINQ to SQL - обновление записей
- 4. Linq to SQL Обновление данных
- 5. Linq to sql частичное обновление?
- 6. Обновление Linq to SQL не работает с использованием шаблона репозитория
- 7. C# обновление таблицы с использованием LINQ to SQL?
- 8. Обновление кода Linq to SQL с использованием хранимых процедур
- 9. Обновление Entity с помощью LINQ TO SQL
- 10. Linq to SQL ADD и обновление
- 11. Linq to Sql Обновление не работает
- 12. Обновление одного столбца в LINQ to SQL
- 13. Linq to SQL: обновление корня агрегата
- 14. Бизнес-логика с использованием Linq-To-SQL
- 15. sql to linq с использованием отдельных
- 16. SQL-запрос с использованием Linq to Entity
- 17. WPF MVVM с использованием LINQ to SQL
- 18. linq to sql query с использованием методов
- 19. Графические записи с использованием linq to sql
- 20. LINQ to Sql с использованием анонимных типов?
- 21. LINQ to SQL с использованием динамических таблиц
- 22. Выбор записей с использованием Linq to SQL
- 23. SELECT @@ DBTS с использованием Linq to SQL
- 24. Анализ XML с использованием LINQ to SQL
- 25. Загрузить DataGridView с использованием Linq to SQL
- 26. Реализация INotifyPropertyChanged с использованием LINQ-to-SQL
- 27. с использованием COLLATE в Linq to SQL
- 28. использованием .Contains() с LINQ-to-SQL
- 29. Развертывание проекта с использованием LINQ to SQL
- 30. Обновление отношений в Linq To SQL возможно?
@Mathieu - вы предполагаете, что он угадывает значения для 200 свойств? они должны откуда-то приехать ... –
Извините, у меня было что-то в виду, которое здесь не показано, мое плохое. – Mathieu
отличный пример обновления. спасибо другу –