Linq to sql обновить объект - PullRequest
       5

Linq to sql обновить объект

1 голос
/ 01 августа 2011

У меня есть метод в библиотеке данных, который выглядит следующим образом

public IEnumerable<GeneralContractLine> getContractLines(int GeneralContractID)
{
    return db.GeneralContractLines.Where(l => l.FKGeneralContractID == GeneralContractID);
}

public void UpdateContractLine(GeneralContractLine line)
{
    //Update the object "line" 
}

Первый метод в порядке, db - это просто объект datacontext, который был инициализирован ранее.

Метод обновления, который я хотел бы сделать что-то вроде:

db.GeneralContractLine.update(line);
db.submitChanges();

Я знаю, что могу найти объект, заменить его, затем обновить, но есть ли лучший способ?

Ответы [ 3 ]

0 голосов
/ 01 августа 2011

с Linq to SQL, вы просто меняете объект и затем вызываете SubmitChanges, когда закончите.

public void UpdateContractLine(GeneralContractLine line)
{
    //Update the object "line" 
    line.PropertyX = "Foo";
    db.SubmitChanges();
}
0 голосов
/ 01 августа 2011

, что вы можете сделать, это создать метод расширения для класса Table для GeneralContractLine и добавить в него метод с именем Update ().

что-то вроде

public static class LinqToSqlExtensions
{
    public static void Update(this System.Data.Linq.Table<GeneralContractLine> table, GeneralContractLine item)
    {
        var connectedItem = table.FirstOrDefault(x => x.ID == item.ID);
        //Update logic in this case updating only the name
        connectedItem.Name = item.Name;
        table.Context.SubmitChanges();
    }
}

просто как неЯ не проверял ничего из этого, но это может быть что-то, что стоит попробовать

О, и если это работает, вызов этого должен быть просто случай добавления оператора using в пространство имен и затем вызова db.GeneralContractLine.Update(line);

0 голосов
/ 01 августа 2011

Я могу предсказать, что вы используете объект db, чтобы получить объект GeneralContractLine где-то в вашем коде и внести некоторые изменения в его свойства, и вы хотите сохранить эти обновления, поэтому мое решение для вас - просто использовать db.submitChanges ()и все изменения, сделанные в объекте GeneralContractLine, будут сохранены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...