首页 文章

实体框架 - 如何使用外键插入表而不先检索外部表行

提问于
浏览
2

我很难找到这个问题的确切答案,所以如果这是多余的,我会道歉 .

所以我定义了3个表,这样:

Person:PersonId,FirstName,LastName

公司:CompanyId,CompanyName

订单:OrderId,PersonId,CompanyId

在Order表上,在PersonId和CompanyId列上定义了一个外键,因此,我生成的我的Order实体类具有Person(不是PersonId)和Company类型的导航属性 .

因此,要插入Order表,我首先需要查询person和company表以获取person和company实体 . 然后我可以使用Person和Company实体构造Order对象并将其保存到db .

在我的场景中,我正在通过PersonId和CompanyId .

在经典SQL中,我只会执行INSERT INTO Order Set(CompanyId,PersonId) - 1次数据库调用 . 但是对于EF,我必须做3分钟的调用 . 这看起来有点矫枉过正 .

有没有办法解决?

PS - 我正在使用EF 6.我知道我可以生成一个表达式并使其成为单个调用..但仍然会产生两个子选择 .

1 回答

  • 2

    除导航属性外,您还可以包含外键属性,然后使用您拥有的ID设置它们 . 如果这样做,则不必为了设置关系而去数据库获取相关实体 .

相关问题