如何通过更改演示模型属性来更新记录?

时间:2011-03-16 09:43:09

标签: silverlight ria

我试图创建一个更新方法,它应该通过以下方式修改数据库条目:

        [Update]
        public void InsertMachinePM(MachinePM machinePM)
        {
            machine _machine = new machine();
            _machine.machine_id = machinePM.MachineID;
            int machineCategoryID = this.ObjectContext.machine_category.Where(so => so.title == machinePM.Category).FirstOrDefault().machine_category_id;
            _machine.machine_category_id = machineCategoryID;
            _machine.code = machinePM.Code;
            _machine.description = machinePM.Description;
            ObjectContext.machines.AddObject(_machine);
            ChangeSet.Associate(machinePM, _machine, UpdateMachinePMKeys);

        }

        private void UpdateMachinePMKeys(MachinePM machinePM, machine _machine)
        {
            machinePM.MachineID = _machine.machine_id;
        }

代码不会修改现有记录,但会添加一个带有修改属性和新ID的新记录。

我试图改变第一种方法的最后两行

ObjectContext.machines.AddObject(_machine);
ChangeSet.Associate(machinePM, _machine, UpdateMachinePMKeys);

ObjectContext.SaveChanges();

但在这种情况下,该方法也不会修改现有记录。

由于我还是Silverlight和RIA的新手,如果有人可以通过更改演示模型值来建议修改现有记录的方法,我将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

我已经弄清楚了。以下代码更新现有记录:

[Update]
    public void InsertMachinePM(MachinePM machinePM)
    {
        machine _machine = ObjectContext.machines.Where(c => c.machine_id == machinePM.MachineID).FirstOrDefault();
        int machineCategoryID = this.ObjectContext.machine_category.Where(so => so.title == machinePM.Category).FirstOrDefault().machine_category_id;
        _machine.machine_category_id = machineCategoryID;
        _machine.code = machinePM.Code;
        _machine.description = machinePM.Description;
        ObjectContext.SaveChanges();
        ChangeSet.Associate(machinePM, _machine, UpdateMachinePMKeys);

    }

    private void UpdateMachinePMKeys(MachinePM machinePM, machine _machine)
    {
        machinePM.MachineID = _machine.machine_id;
    }