我很难找到这个问题的确切答案,所以如果这是多余的,我会道歉 .
所以我定义了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 回答
除导航属性外,您还可以包含外键属性,然后使用您拥有的ID设置它们 . 如果这样做,则不必为了设置关系而去数据库获取相关实体 .