c# - 从另一个表单插入数据后 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
。
有什么帮助吗?
谢谢
解决方案
您正在将评论添加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();
推荐阅读
- node.js - Heroku 没有运行 postinstall 或 heroku-postbuild 命令:
- javascript - 通过检查另一个带有对象的嵌套数组来过滤带有对象的嵌套数组 - JavaScript
- postgresql - Postgres 选择的工作速度比该选择快 3 倍
- javascript - 这个关键字和 addEventHandler 函数有问题
- gcc - 从源代码编译pytorch时如何知道选择哪个gcc版本?
- r - R POSIXlt 属性显示 IST 为 +6:30 而 IST 为 +5:30
- c# - 从 DataGridHyperlinkColumn 打开链接
- regex - 正则表达式匹配分隔符之间的文本
- java - 如何在不使用 block() 的情况下使用 Mono 的返回对象?
- docker - Minikube 在创建时一直失败:StartHost 失败,但会重试:创建主机:创建主机在 120.000000 秒内超时