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

时间:2015-08-30 04:53:51

标签: c# entity-framework

假设我有两个表,Person和Address,它们具有一对一的关系(一对一或者一对一是精确的。)Person有一个Id字段,它是PK和地址有一个PersonId字段,即PK / FK并匹配Person PK。到目前为止一切都很好。

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

  1. 保存人员表格字段。
  2. GET Person对象我刚从SQL中保存(另一个调用),并获取其生成的Id。
  3. 使用我在步骤#2中获得的ID保存地址表。
  4. 有更好的方法吗?进行3分钟的调用似乎很愚蠢。

    P.S。 - 随意编辑标题,我无法在句子中总结q。

2 个答案:

答案 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();