Sql 如何在一次操作中使用带有外键查找的实体框架插入记录?
假设我想插入一辆品牌为的新车:Sql 如何在一次操作中使用带有外键查找的实体框架插入记录?,sql,entity-framework,ef-code-first,Sql,Entity Framework,Ef Code First,假设我想插入一辆品牌为的新车: 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进行查询以检索mak
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?这是不可能的。您只能通过将外键属性
Car.MakeId
设置为Make
的有效键值,或将导航属性Car.Make
设置为再次具有有效键值的Make
实体,来创建从Car
到Make
的关系。在这两种情况下,您都需要知道要分配给汽车的Make
的主键值Id
。知道任何其他属性(如Make.Name
)都是不够的,即使数据库中的唯一键约束保证它是唯一的。我认为您的SQL还将生成两个查询。