gpt4 book ai didi

c# - EntityFramework中如何建立一对一关系?

转载 作者:太空宇宙 更新时间:2023-11-03 10:24:03 25 4
gpt4 key购买 nike

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

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

  1. 保存人员表字段。
  2. 获取我刚刚从 SQL 中保存的 Person 对象(另一个调用),并获取其生成的 ID。
  3. 使用我在第 2 步中获得的 ID 保存地址表。

有更好的方法吗?进行 3 db 调用似乎很愚蠢。

附言- 随意编辑标题,我无法用一句话概括 q。

最佳答案

Entity Framework 自己为你做这件事。方法是,您需要填写您的个​​人实体以及您的地址实体。

例如你的 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 保存在地址字段中。

关于c# - EntityFramework中如何建立一对一关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32293289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com