【发布时间】:2014-03-27 19:57:52
【问题描述】:
我很难找到这个问题的确切答案,所以如果这是多余的,我很抱歉。
所以我定义了 3 个表:
人员:PersonId、FirstName、LastName
公司:公司 ID、公司名称
订单:OrderId、PersonId、CompanyId
在 Order 表上,PersonId 和 CompanyId 列上定义了一个外键,因此,EF 生成的我的 Order 实体类具有 Person(不是 PersonId)和 Company 类型的导航属性。
因此,要插入 Order 表,我首先需要查询 person 和 company 表以获取 person 和 company 实体。然后我可以使用 Person 和 Company 实体构造 Order 对象并将其保存到数据库中。
在我的场景中,我被传递了一个 PersonId 和 CompanyId。
在经典 SQL 中,我只需执行 INSERT INTO Order Set (CompanyId, PersonId) - 1 个数据库调用。但是使用 EF,我必须进行 3 次 db 调用。这似乎有点矫枉过正。
有没有办法解决这个问题?
PS - 我使用的是 EF 6。我知道我可以生成一个表达式并使其成为单个调用..但这仍然会产生两个子选择。
【问题讨论】:
标签: entity-framework insert entity-framework-6