使用列表框更新数据库

时间:2012-09-19 08:18:58

标签: c# winforms entity-framework

我遇到了一个问题,即我的列表框无法更新数据。我有2张桌子,时间和电车服务。列表框从时序表中读取并显示数据。两个表都是相关的。每当我更新电车服务表中的时间时,它都会提示我这个错误:

  

属性'TimingID'是对象密钥信息的一部分,无法修改。

有人可以帮忙吗?

private void btnUpdateTS_Click(object sender, EventArgs e)
    {

        int ID = Int32.Parse(lblID.Text);
        foreach (timing selectedTiming in lstTime.SelectedItems)
        {
            var EditTS = (from ets in db.trolleyservices
                          where ets.idtrolleyservice == ID
                          select ets).First();
            EditTS.Type = txtType.Text;
            EditTS.TimingID = selectedTiming.TimingID;

            db.SaveChanges();
            txtType.Text = "";
        }
   }

3 个答案:

答案 0 :(得分:0)

听起来您的电车服务有一个TimingID标识列。因此,数据库将为您创建键值,您无法自己设置它们。

如果您希望能够设置该值,也许您应该考虑将其设为非关键字段。

答案 1 :(得分:0)

需要说在保存之前修改了对象。

Database.ObjectStateManager.ChangeObjectState(yourObject, EntityState.Modified);
Database.SaveChanges();

答案 2 :(得分:0)

尝试添加

db.ObjectStateManager.ChangeObjectState(<yourObject>, EntityState.Modified);
db.SaveChanges();

之前的