Как обновить запись, изменив атрибуты модели презентации? - PullRequest
1 голос
/ 16 марта 2011

Я попытался создать метод обновления, который должен изменить запись базы данных следующим образом:

        [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;
        }

Код не изменяет существующую запись, но добавляет новую с измененными атрибутами и новым идентификатором.

Я пытался изменить последние две строки из первого метода

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

с ObjectContext.SaveChanges();

, но в этом случае метод не изменяет существующийлибо запись.

Поскольку я еще новичок в Silverlight и RIA, я был бы признателен, если бы кто-нибудь мог предложить метод изменения существующей записи путем изменения значений модели презентации.

Спасибо!

1 Ответ

1 голос
/ 16 марта 2011

Я понял это. Следующий код обновляет существующую запись:

[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;
    }
...