2013-04-16 32 views
0

我很努力改变(实际添加)属性到我的数据库中已经存在的对象。更改数据库中的对象

在我的数据库中,我有Scenario对象,并且每个Scenario对象都与(一个或多个)SceneWriter对象关联。现在我想添加一个SceneWriter到我的Scenario与给定的ScenarioID

这里是我试图做到这一点:

string filmID = comboBox1.SelectedValue.ToString(); 
     Scenario newScenario = new Scenario(); 
     foreach (Scenario scenario in scenarioes) 
     { 
      string thisID = scenario.filmID.ToString(); 
      if (thisID.Equals(filmID)) 
      { 
       try 
       { 
        // remove old scenario from DB 
        myDatabase.Scenario.Remove(scenario); 
        myDatabase.SaveChanges(); 


        // add new scenario to DB, which now contains new scenewriter 
        newScenario = scenario; 
        scenario.SceneWriter.Add(newScenewriter); // this newScenewriter I fetched before 
        myDatabase.Scenario.Add(newScenario); 
        myDatabase.SaveChanges(); 
       } 
       catch (Exception ec) 
       { 
        MessageBox.Show(ec.ToString()); 
       } 
      } 
     } 

但它给我一个错误,而我尝试从myDatabase删除此Scenario记录,因为它与其他一些表的链接。

所以我需要什么,是不是删除任何记录,但变化它(刚加入这个SceneWriter),最好是在myDatabase

回答

2

您只需更新只是删除了代码去除场景中的对象

string filmID = comboBox1.SelectedValue.ToString(); 
Scenario newScenario = new Scenario(); 
foreach (Scenario scenario in myDatabase.Scenario 
    .Where(scn => scn.filmID.ToString().Equals(filmId)) 
{ 
    scenario.SceneWriter.Add(newScenewriter);before 
} 

myDatabase.SaveChanges(); 
+2

@Whizzil我的'filmID'变量转换为相同类型的'Scenario.filmID'这样你就不必做一个ToString() –

+0

谢谢,它的工作 @Bob谢谢这就是我所做的 – Whizzil

1

,并重新添加。这绝对是多余的过程。

string filmID = comboBox1.SelectedValue.ToString(); 
    Scenario newScenario = new Scenario(); 
    foreach (Scenario scenario in scenarioes) 
    { 
     string thisID = scenario.filmID.ToString(); 
     if (thisID.Equals(filmID)) 
     { 
      try 
      { 
       scenario.SceneWriter.Add(newScenewriter); 
       myDatabase.SaveChanges(); 
      } 
      catch (Exception ec) 
      { 
       MessageBox.Show(ec.ToString()); 
      } 
     } 
    }