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

在我的数据库中,我有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内部。

===============>>#1 票数: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 票数: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());
            }
        }
    }

  ask by Whizzil translate from so

未解决问题?本站智能推荐:

2回复

使用触发器更改数据库中的记录

这基本上就是我的数据库的样子 字母X,Y,Z,A,B代表某些代码或数字 例如,如果我在第1行(ID = 1)中将代码Y更改为R,我想将我有代码Y的每个字段更改为代码R,反之亦然,如果我在第2行中将Y更改为R,则自动更改第1行的Y到R 最重要的是,如果将某些代码更改为另一种代码
6回复

如何在已部署的应用程序中更改数据库设计?

情况 我正在创建一个C#/ WPF 4应用程序,使用SQL Compact Edition数据库作为实体框架的后端并使用ClickOnce进行部署。 我对使用数据库的应用程序很新,但我不怀疑我在设计和构建原始数据库时会遇到很多问题。 但是,我担心将来我需要添加或更改一些功能,这些功
1回复

更改数据集中的行并更新数据库

我需要制作一个将分数保存在数据库中的应用程序。 数据库的结构是作为主键的NICK( string )和PTS( int )。 如果播放器具有NICK,则该数据库已存在; 他在上一场比赛中获得的积分应添加到与NICK相对应的PTS中。 我有麻烦编辑DataSet ,然后更新数据库。
2回复

插入和更新不会更改数据库(SDF)

我将数据保存到名为Settings.sdf数据库时遇到问题。 我有几个文件: 如果尝试使用UPDATE或INSERT INTO查询,则不会更新数据库( Settings.sdf ),而仅更改缓存文件中的数据(无论位于何处)。 我正确地使用了所有SqlCeCommands 。 例如:
1回复

更改数据库后刷新radgrid吗?

我有一个包含radgrid的页面。 网格包含从数据库检索的数据。 它还包含一个添加记录按钮,该按钮将打开一个新选项卡,供用户填写新记录的详细信息。 添加记录后,用户将关闭打开的选项卡。 在用户刷新页面之前,添加的新记录不会显示在网格中。 当用户关闭“添加记录”选项卡或用户切换回带有
2回复

如何随时间更改数据库列值?

我正在为酒店管理系统进行房屋整理。 我必须实施一个系统,管家每天必须打扫房间两次(例如:每12个小时一次)。 在我的数据库中,我有一列名为“ Room status 。 我在表单中使用comboBox来获取这些数据。 comboBox包含2种类型的日期( Cleaned , Have
2回复

MySQL Connection如何自动更改数据库?

我已经使用断点一步一步地调试了,所以我很奇怪: http ://i61.tinypic.com/2nbdhs0.png在函数的开头,设置为默认模式的数据库是Ricette,后来调用打开连接作为默认架构更改的数据库,看一下: http ://i57.tinypic.com/2di4u50.png数
1回复

更改数据库连接并更新datagridview

我正在尝试在更改连接字符串数据源后显示数据库记录。 这是我的代码: 我的全局变量是: 如何在datagridview中显示新记录?
2回复

SQLite-动态创建和更改数据库

今天,我使用SQLite并随项目一起发送数据库文件。 但是,我希望在用户首次启动软件时创建数据库。 有没有一种方法可以复制基于现有数据库创建数据库所需的代码? 问题在于,当用户下载新版本时,他可能会被诱骗通过其最后一个数据库进行复制并丢失数据。 如果我需要新的列或表等,我希望有一
1回复

根据请求来源更改数据库

我正在开发将由多家公司运行的Web应用程序。 每个公司都会拥有自己的Web应用程序实例。 每个公司都有自己的数据库(Web应用程序和数据库将在同一服务器上运行)。 这些实例中的每一个都应与一个Web API应用程序对话,以从其数据库中检索该特定公司的数据。 现在,我想知道是否是一