簡體   English   中英

使用實體框架更新記錄不起作用

[英]updating a record with entity framework not working

這是我的代碼:

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

代碼編譯和執行正常,但數據庫沒有變化,也就是說,所有信息都與更新前完全相同。 任何幫助將不勝感激,謝謝!

如果你想插入一個新的 Domain.Box object,你應該這樣做:

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

無需創建updatedBox object 因為您只是在覆蓋它。 如果我了解您的要求,您希望執行插入,而不是更新。

如果我不正確並且您正在嘗試更新updatedBox object 的某些屬性,那么只需傳遞對 object 的引用並更新它的屬性:

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();

我會這樣嘗試:

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

我想你想這樣做:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM