обновление записи с неработающей структурой сущностей - PullRequest
0 голосов
/ 29 июня 2011

Это мой код:

...
Domain.Box updatedBox = entities.Boxes.FirstOrDefault(TextBoxBoxID.Text);
updatedBox = getBoxInfo();
entities.SaveChanges();

private Domain.Box getBoxInfo()
    {
        Domain.Box retBox = new Domain.Box();
        retBox.BoxID = TextBoxBoxID.Text;
        retBox.LocationID = Convert.ToDecimal(TextBoxLocationID.Text);
        retBox.Positions = Convert.ToByte(TextBoxPositions.Text);            
        retBox.DiseaseID = RadComboBoxDisease.SelectedValue;
        retBox.SampleTypeID = RadComboBoxSampleType.SelectedValue;
        retBox.TubeTypeId = RadComboBoxTubeTypeID.SelectedValue;

        return retBox;
    }

Код компилируется и выполняется нормально, но база данных не изменяется, то есть вся информация точно такая же, какой была до обновления.Любая помощь будет оценена, спасибо!

Ответы [ 3 ]

2 голосов
/ 29 июня 2011

Если вы хотите вставить новый объект Domain.Box, вы должны сделать это так:

entities.Boxes.AddObject(getBoxInfo());
entities.SaveChanges();

Нет необходимости создавать объект updatedBox, потому что вы просто перезаписываете его.Если я понимаю ваши требования, вы хотите выполнить вставку, а не обновление.

Если я ошибаюсь и вы пытаетесь обновить определенные свойства объекта updatedBox, просто передайтессылка на объект и обновление его свойств:

Domain.Box updatedBox = entities.Boxes.FirstOrDefault(TextBoxBoxID.Text);
getBoxInfo(ref updatedBox);
entities.SaveChanges();

private void getBoxInfo(ref Domain.Box retBox)
{
    retBox.BoxID = TextBoxBoxID.Text;
    ...
}

entities.SaveChanges();
0 голосов
/ 29 июня 2011

Я думаю, вы хотите сделать это:

Domain.Box updatedBox = entities.Boxes.FirstOrDefault(TextBoxBoxID.Text);
UpdateBoxInfo(updatedBox);
entities.SaveChanges();

private void UpdateBoxInfo(Domain.Box theBox)
    {
        theBox.BoxID = TextBoxBoxID.Text;
        theBox.LocationID = Convert.ToDecimal(TextBoxLocationID.Text);
        theBox.Positions = Convert.ToByte(TextBoxPositions.Text);            
        theBox.DiseaseID = RadComboBoxDisease.SelectedValue;
        theBox.SampleTypeID = RadComboBoxSampleType.SelectedValue;
        theBox.TubeTypeId = RadComboBoxTubeTypeID.SelectedValue;
    }
0 голосов
/ 29 июня 2011

Я бы попробовал это так:

Domain.Box updatedBox = entities.Boxes.FirstOrDefault(TextBoxBoxID.Text);
getBoxInfo(updatedBox);
entities.SaveChanges();

private void getBoxInfo(Domain.Box retBox)
    {
        retBox.LocationID = Convert.ToDecimal(TextBoxLocationID.Text);
        retBox.Positions = Convert.ToByte(TextBoxPositions.Text);            
        retBox.DiseaseID = RadComboBoxDisease.SelectedValue;
        retBox.SampleTypeID = RadComboBoxSampleType.SelectedValue;
        retBox.TubeTypeId = RadComboBoxTubeTypeID.SelectedValue;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...