如何在EntityFramework中建立一对一的关系

本文关键字:一对一 关系 建立 EntityFramework | 更新日期: 2023-09-27 18:10:27

假设我有两个表,Person和Address,它们具有一对一的关系(准确地说是一对一或一对零)。Person有一个Id字段,它是PK, Address有一个PersonId字段,它是PK/FK,并且匹配Person PK,到目前为止一切顺利。

我的问题是——我在保存地址的同时也保存了人。Person的PK是自动生成的,所以我最终这样做:

  1. 保存Person表字段。
  2. GET Person对象我刚刚从SQL(另一个调用)保存,并获得其生成的Id。
  3. 使用我在步骤#2中得到的Id保存地址表

有更好的方法吗?打3分贝的电话看起来很傻。

注:-请随意编辑标题,我无法用一句话概括q。

如何在EntityFramework中建立一对一的关系

实体框架自己为你做。方法是,您需要填写您的个人实体以及您的地址实体。

例如你的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();