我可以仅使用Linq to SQL更新1个对象吗?

时间:2010-03-04 01:14:31

标签: linq-to-sql

这是一个简单的问题,但我不知道答案,我无法让它发挥作用。

我是否只能在整个DataContext上更新一个实体?或者我应该只关注普通的ADO.NET进行此操作吗?

修改

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,这似乎是正确的行为。

修改

我已经更改了使用新的datacontext获取整数的方法,并且似乎工作正常,我对为什么调用delete方法有一个奇怪的想法,因为它是被调用的方法,但是再次..正在工作现在...

谢谢大家的时间。

2 个答案:

答案 0 :(得分:3)

是的,这是可能的。你有什么尝试?应该这么简单:

using (var dc = new YourDataContext())
{
    Person p = dc.Persons.Take(1).Single();
    p.FirstName = "Ahmad";
    dc.SubmitChanges();
}

答案 1 :(得分:1)

是的,你可以:

Foo foo = dc.Foos.Where(foo => foo.Id == 345).Single();
foo.Name = "foo";
dc.SubmitChanges();