Могу ли я обновить 1 объект только с помощью Linq to SQL? - PullRequest
4 голосов
/ 04 марта 2010

Это простой вопрос, но я не знаю ответа, и я не мог заставить его работать.

Могу ли я обновить только один объект во всем DataContext? Или я должен следовать обычному ADO.NET только для этой операции?

Edit:

public MyObject GetMyObjectById(int selectedId)
    {
        DataContext db = _dbManager.GetContext();

        return db.MyObject.SingleOrDefault(p => p.Id == selectedId);
    }

Я получаю объект с вышеуказанным запросом ... Затем я запрашиваю целое число ... в другой таблице / объекте

 public int GetMyInteger()
    {
        DataContext db = _dbManager.GetContext();

        return db.MyAnotherObject.FirstOrDefault().MyInteger;
    }

Все хорошо для всех моих операций ... но теперь я просто хочу обновить только целое число, которое я получил из базы данных ...

 public void SetMyInteger(int updInteger)
    {
        DataContext db = new DataContext(ConnectionString);

        MyAnotherObject theEntity = db.MyAnotherObject.FirstOrDefault();
        atheEntity.MyInteger = updInteger;
        db.SubmitChanges(ConflictMode.ContinueOnConflict);
    }

Вышеупомянутый метод удалил MyObject, который я получил из первого запроса !!! Конечно, если я использую статический контекст, DataContext пытается обновить MyObject и MyAnotherObject, что кажется правильным поведением.

Edit:

Я изменил метод, получая целое число с новым datacontext, и, похоже, он работает правильно, у меня странная мысль о том, почему вызван метод delete, потому что это был метод, который был вызван, но снова ... работает сейчас ...

Спасибо всем за потраченное время.

Ответы [ 2 ]

3 голосов
/ 04 марта 2010

Да, это возможно. Что вы пробовали? Это должно быть так просто:

using (var dc = new YourDataContext())
{
    Person p = dc.Persons.Take(1).Single();
    p.FirstName = "Ahmad";
    dc.SubmitChanges();
}
1 голос
/ 04 марта 2010

Да, вы можете:

Foo foo = dc.Foos.Where(foo => foo.Id == 345).Single();
foo.Name = "foo";
dc.SubmitChanges();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...