[英]How to configure one-to-one optional relationship with EntityFramework?
[英]How to set up a one-to-one relationship in EntityFramework?
假设我有两个表,Person 和 Address,它们具有一对一的关系(准确地说是一对一或一对零。)Person 有一个 Id 字段,它是 PK 并且 Address 有一个PersonId 字段,它是 PK/FK 并与 Person PK 匹配。 到现在为止还挺好。
我的问题是 - 我在保存人的同时保存地址。 人的 PK 是自动生成的,所以我最终这样做:
有一个更好的方法吗? 进行 3 db 调用似乎很愚蠢。
PS - 随意编辑标题,我无法用一句话概括 q。
实体框架自己为你做。 方法是,您还需要填写您的个人实体以及您的地址实体。
例如,您的 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。
对第二个插入的 PK/FK 使用此命令:
LAST_INSERT_ID();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.