C# 更改数据库中的对象
我正在努力更改(实际添加)数据库中已经存在的对象的属性 在我的数据库中,我有C# 更改数据库中的对象,c#,database,C#,Database,我正在努力更改(实际添加)数据库中已经存在的对象的属性 在我的数据库中,我有Scenario对象,每个Scenario对象都与(一个或多个)SceneWriter对象链接。现在我想用一个给定的场景ID向我的场景添加一个场景编写器 下面是我如何尝试的: string filmID = comboBox1.SelectedValue.ToString(); Scenario newScenario = new Scenario(); foreach (Scenario
Scenario
对象,每个Scenario
对象都与(一个或多个)SceneWriter
对象链接。现在我想用一个给定的场景ID向我的场景添加一个场景编写器
下面是我如何尝试的:
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
中删除此场景
记录时,它给了我一个错误,因为它与其他一些表链接
因此,我需要的是不要删除任何记录,而是更改它(只需添加此SceneWriter
),最好是在myDatabase
中,您只需更新对象即可
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();
您可以只更新对象
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();
只是删除了删除场景并重新添加的代码。这绝对是多余的过程
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());
}
}
}
只是删除了删除场景并重新添加的代码。这绝对是多余的过程
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());
}
}
}
@Whizzil我会将filmID
变量转换为与您的场景相同的类型。filmID
这样您就不必执行ToString()@Whizzil我会将filmID
变量转换为与您的场景相同的类型。filmID
这样您就不必执行ToString()