首页 > 解决方案 > 从另一个表单插入数据后 EF6 更新外键

问题描述

从不同的表单插入记录后,我试图更新表的外键。

项目

ProjectID    CommentID

评论

CommentID   Date    Comment

首先,我创建Project并分配CommentID一个NULL值,因为还没有评论。到目前为止,一切都很好。

然后,在某个时刻,我需要为我的项目添加评论。我可以成功添加评论,但无法CommentID在相关Project表中分配。

这就是我正在尝试做的事情(没有成功):

MyEntities ctx = new MyEntities();

tblComents coment = new tblComments()
        {
            Date = DateComent.Value,
            Comment = TxtComment.Text.Trim()
        };

ctx.tblComments.Add(comment);
var projet = new tblProject { tblComments = comment };
ctx.SaveChanges();

像这样,我创建了评论,但从未在 table 中分配外键Projects

有什么帮助吗?

谢谢

标签: c#entity-framework

解决方案


您正在将评论添加new到与您的数据库无关的项目中:

  tblComents coment = new tblComents()
        {
            Date = DateComent.Value,
            Coment = TxtComent.Text.Trim()
        };
            tblProject project = ctx.tblProject(x=> x.Id == someid); // find the project you want
            if(project != null) project.tblComents.Add(coment);
ctx.SaveChanges();

您应该从数据库中获取一个项目(上面的代码),然后将评论添加到该项目,或者将项目添加到数据库而不是评论(下面的代码):

  tblComents coment = new tblComents()
        {
            Date = DateComent.Value,
            Coment = TxtComent.Text.Trim()
        };
            tblProject project = new tblProject();
            ctx.tblProjects.Add(project);

            if(project != null) project.tblComents.Add(coment);
ctx.SaveChanges();

推荐阅读