Подтвердить что ты не робот

Обновление с использованием LINQ to SQL

Как обновить запись по конкретному идентификатору в LINQ to SQL?

4b9b3361

Ответ 1

LINQ - это инструмент запросов (Q = Query), поэтому нет волшебного способа LINQ для обновления только одной строки, за исключением объектно-ориентированного контекста данных (в случае LINQ-to-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);
}

Ответ 2

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

Ответ 3

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 Toys"

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

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

Ответ 4

При отсутствии более подробной информации:

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

Ответ 5

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

Ответ 6

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

Ответ 7

Я нашел обходное решение неделю назад. Вы можете использовать прямые команды с помощью "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} → - поле, в которое вы отправите значение фильтра;

Код → - новое значение для поля;

Я надеюсь, что эта ссылка поможет.