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

时间:2014-03-27 19:57:53

标签: entity-framework insert entity-framework-6

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

所以我定义了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 个答案:

答案 0 :(得分:2)

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