我很难找到这个问题的确切答案,所以如果这是多余的,我会道歉。
所以我定义了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.我知道我可以生成一个表达式并使其成为单个调用..但仍然会产生两个子选择。
答案 0 :(得分:2)
除了导航属性之外,您还可以包含外键属性,然后使用您拥有的ID设置它们。如果这样做,则不必为了设置关系而去数据库获取相关实体。