2010-09-22 37 views
2

因此,我希望在这个常见问题上独一无二。在Linq-to-SQL中保存更改

我做了我的查询,得到我的对象,然后将对象传递到一个窗体中,它用对象中的数据填充窗体(这不是通过引用传入的)。

然后,我编辑被查询的对象的值(通过窗体),然后返回一个由窗体中的值构造的新对象。

然后我想更新到数据库。附加什么都不做(运行但不更新)。 SubmitChanges也不做任何事情(并且两者一起使用时什么也不做)。

我错过了什么?

更新:这里是我使用的代码:

// In constructor 
_dataMap = new DataMapDataContext(); 
_addresses = _dataMap.AddressItems 
     .Where(address => address.InsertUserName == _currentUser.Name).ToList(); 



public void EditButtonClick() 
{ 
    using (AddAddressForm form = new AddAddressForm(_addresses[_currentAddress])) 
    { 
     form.Text = "Edit Address"; 
     if (DialogResult.OK == form.ShowDialog()) 
     { 
      _addresses[_currentAddress] = form.Item; 
      _dataMap.SubmitChanges(); 
      DisplayItem(); 
     } 
    } 
} 
+4

老兄,你昨天问到这个问题,我回答(并正确打勾) - http://stackoverflow.com/questions/3756890/get-linq-to-sql-to-save-to-数据库什么是问题? – RPM1984 2010-09-22 04:58:59

+2

另外,发布你尝试过的代码,这不是工作 - 否则人们会“猜测”你有/没有做过 - 下面的答案就是 – RPM1984 2010-09-22 05:00:26

+0

@ RPM1984的一个例子 - 确实,它们非常相似。但是这是一个插入的更新。 (我不认为InsertOnSumbit将适用于更新的项目)。 – Vaccano 2010-09-22 07:04:53

回答

6

你需要从数据库中获取的记录,更新它的值,然后调用SubmitChanges()

using(MyDataContext db = new MyDataContext()) 
{ 
    // get the record 
    Product dbProduct = db.Products.Single(p => p.ID == 1); 

    // set new values 
    dbProduct.Quantity = 5; 
    dbProduct.IsAvailable = false; 

    // save them back to the database 
    db.SubmitChanges(); 
} 
+2

你的使用/处置在哪里? tsk,tsk。 =) – RPM1984 2010-09-22 05:02:45

+0

@ RPM1984,谢谢 – 2010-09-22 08:32:54

-4

原来我几乎一切正常。

我只需要传入我参考编辑的对象。这样当它发生变化时,它不是一个新对象被返回,而是同一个对象(即Linq-to-SQL已经知道的)。

这些是上面代码的两行代码:

AddressItem itemToEdit = _addresses[_currentAddress]; 
using (AddAddressForm form = new AddAddressForm(ref itemToEdit)) 
+0

@这是非常错误的如何做到这一点 – msarchet 2010-09-24 20:49:59

+0

@msarchet - 这只是一个演示,所以它现在并不那么重要,但为了将来的参考,为什么这是错的?我不是Linq-to-SQL的庞大用户,当我使用它时,我通常会调用存储过程来插入和更新。所以我不熟悉Linq-To-SQL的这个方面。如果你有一个更好的方法*,它有一个不同于具有数据上下文和查询进行更新的类的方法*然后将它作为答案发布,我将选择它。如果没有,那么......然后...... – Vaccano 2010-09-25 23:50:29

+1

这么多downvotes并没有解释为什么这是不好的。必须爱懦弱的downvoters。 – Vaccano 2011-07-05 16:57:37