【问题标题】:How to insert a record using Entity Framework with foreign key lookup in a single operation?如何在单个操作中使用带有外键查找的实体框架插入记录?
【发布时间】:2013-06-07 20:32:52
【问题描述】:

假设我想插入一辆带有品牌的新车:

public class Car {

 public int Id {get;set;}
 public string Name {get;set;}
 public MakeId {get;set;}

}

public class Make{

 public int Id {get;set;}
 public string Name {get;set;}     

}

现在假设我有要插入的汽车的品牌名称。我不想对 make 进行查询以检索 make id,然后再进行新查询以插入汽车。我希望 EF 产生类似的东西:

INSERT INTO Cars (Name, MakeId)
 SELECT @name, m.Id FROM Makes m WHERE m.Name = @makeName

这是否可能以某种方式或只是下降到 ADO.NET ?

【问题讨论】:

  • 我认为你的 SQL 也会产生 2 个查询。

标签: sql entity-framework ef-code-first


【解决方案1】:

这是不可能的。您只能通过将外键属性 Car.MakeId 设置为 Make 的有效键值或将导航属性 Car.Make 设置为 Make 实体来创建从 CarMake 的关系再次具有有效的键值。在这两种情况下,您都需要知道要分配给CarMake 的主键值Id。知道任何其他属性(例如 Make.Name)是不够的,即使通过数据库中的唯一键约束保证它是唯一的也是如此。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 2019-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多