假设我有两个表,Person和Address,它们具有一对一的关系(一对一或者一对一是精确的。)Person有一个Id字段,它是PK和地址有一个PersonId字段,即PK / FK并匹配Person PK。到目前为止一切都很好。
我的问题是这个 - 我在保存人的同时保存了地址。人的PK是自动生成的,所以我最终这样做了:
有更好的方法吗?进行3分钟的调用似乎很愚蠢。
P.S。 - 随意编辑标题,我无法在句子中总结q。
答案 0 :(得分:2)
实体框架本身就是为您完成的。 方法是,您需要填写人员实体以及您的地址实体。
例如,您的Person实体模型是
public class Person{
public int PersonId {get;set;}
public string PersonName {get;set;}
public Address PersonAddress{get;set;}
//You must have this field (PersonAddress) if you created model from
// database having both the tables relations.
}
现在你的地址实体模型是
public class Address{
public string City{get;set;}
public string State {get;set;}
public string Country{get;set;}
public int PersonId{get;set;}
}
现在你需要做的是,
将您的个人实体填写为
Person person = new Person();
person.Name = "ABC";
person.PersonAddress = new Address(){ City="DEF", State = "OPQ", Country="XYZ", /*Leave PersonId*/ };
将此实体保存在数据库中
context.entity(person).state=EntityState.Added;
context.SaveChanges();
这将保存实体,人员和地址,并且也会有关系。您可以检查它是否会在地址字段中保存PersonId。
答案 1 :(得分:0)
将此命令用于第二个插入的PK / FK:
LAST_INSERT_ID();