如何在EntityFramework中建立一对一的关系
本文关键字:一对一 关系 建立 EntityFramework | 更新日期: 2023-09-27 18:10:27
假设我有两个表,Person和Address,它们具有一对一的关系(准确地说是一对一或一对零)。Person有一个Id字段,它是PK, Address有一个PersonId字段,它是PK/FK,并且匹配Person PK,到目前为止一切顺利。
我的问题是——我在保存地址的同时也保存了人。Person的PK是自动生成的,所以我最终这样做:
- 保存Person表字段。
- GET Person对象我刚刚从SQL(另一个调用)保存,并获得其生成的Id。
- 使用我在步骤#2中得到的Id保存地址表
有更好的方法吗?打3分贝的电话看起来很傻。
注:-请随意编辑标题,我无法用一句话概括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();