0

データベースに既に存在するオブジェクトに属性を変更する (実際に追加する) ことに苦労しています。

私のデータベースにはScenarioオブジェクトがあり、すべてのScenarioオブジェクトは (1 つ以上の)SceneWriterオブジェクトにリンクされています。今、私SceneWriterScenario与えられ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());
                }
            }
        }

Scenarioしかし、このレコードを から削除しようとすると、エラーが発生しますmyDatabase。これは、他のテーブルとリンクされているためです。

したがって、私が必要とするのは、レコードを削除するのではなく、変更することです( this を追加するだけですSceneWriter)、できればmyDatabase.

4

2 に答える 2

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());
            }
        }
    }
于 2013-04-16T17:39:25.557 に答える