我们在“联系人”表格中有一个表“问题”和外国人。“理想情况下,当添加新问题时,用户应从下拉列表中选择联系人。但是,在某些情况下,联系人可能尚未存在,因此用户可以添加最少的新联系人详细信息以将问题导入数据库。(这是一个支持台应用程序,速度对于操作员来说至关重要。)联系人数据将在以后清理。 / p>
因此,在代码中,我们使用Entity Framework检测新联系人并在数据库中创建一个新联系人:_context.AddToContacts(_contact);
。然后,我们需要检索新的id以便在问题上进行更新 - 因此从contacts表中读取以添加最后一条记录。
这很好。
然后我们使用ContactsReference.EntityKey
构建问题记录,包括新的外键。
当我们保存问题SaveChanges
时,我们可以获得问题记录(使用正确的外键返回联系人),但我们将另一个联系人记录添加到数据库中。
我们在这做太多工作吗?或者Entity Framework是否能够处理表之间正确添加和管理数据链接?
答案 0 :(得分:3)
您可以在一次交易中完成这两项工作。
var contact = new Contact(){/*initialize properties*/};
var issue = new Issue(){/*initialize properties*/};
issue.Contact = contact;
_context.AddToIssues(issue);
_context.SaveChanges();
EF将检测新的联系人并将其添加。