2011-06-29 5 views
0

これは私のコードで動作していない:エンティティフレームワークでレコードを更新する

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

コードをコンパイルし、罰金実行されますが、データベースではなく、変更を行い、これは、すべての情報は正確にそれがあったように同じであるが更新の前にどんな助けもありがとう、ありがとう!

+0

私はあなたが時間をやろうとしているのか理解していませんere。 Domain.Boxオブジェクトを取得し、その値を新しいオブジェクトに設定しますか? –

+1

webyac、あなたは_reference_を上書きしています。 FirstOrDefaultボックスの何も残っていません。 –

答えて

2

新しい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

ありがとう、私は実際にETオブジェクトへの参照を紛失しました – webyacusa

0

私はそれをこのように試してみました:

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

Domain.Boxが値型でない限り、参照渡しする必要はないと思います。 –

+0

BoxIdはおそらく変更されるべきではありません。 –

+0

良い点!コードが更新されました。 –

0

私はあなたがこれをしたいと思う:

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; 
    } 
関連する問題