如何在Entity Framework中为每个客户添加2条地址记录

时间:2016-02-23 17:14:35

标签: c# entity-framework

我在1个表中有个人信息,在另一个表中有地址。地址可能是2个记录(Home,Work)地址。我正在使用Entity Framework来插入这些信息。不确定如何为1个人信息插入2个地址。

这是我在Repository中插入个人信息的方法:

  public void InsertApplication(PersonalInfo personalInfo)
    {   
       creditApplicationsContext.PersonalInfos.Add(personalInfo);
    }
在PersonalInfo类中的

我有地址数,所以如果它设置为2意味着我有2个地址给这个客户。

public class PersonalInfo 
{

    public int Id { get; set; }

    public string Name{ get; set; }
     .....

    public int numberofaddresses{ get; set; }
  } 

此方法是在存储库中插入地址:

  public void InsertAddress(Address address)
    {

        creditApplicationsContext.Addesses.Add(address);
    }

这是地址类:

public class Address 
{

    public int Id { get; set; }


    public int ApplicantId { get; set; }                            


    public Applicant ApplicantTypeRef { get; set; }       


    public bool IsCurrentResidence { get; set; }


    public bool IsPreviousResidence { get; set; }


    public string StreetNumber { get; set; }


    public string StreetName { get; set; }


    public string ApartmentSuite { get; set; }

1 个答案:

答案 0 :(得分:1)

通常使用主要类中的集合来建模1..n关系...

public class PersonalInfo 
{
    private ICollection<Address> _Addresses = new List<Address>()

    public int Id { get; set; }
    public string Name{ get; set; }

    public virtual ICollection<Address> Addresses 
    { 
       get { return _Addresses; }
       set { _Addresses = value}

    public int NumberOfAddresses
    { 
       get return Addresses.Count()
    }
} 

...和依赖类中的外键:

public class Address 
{
   public int PersonalInfoId {get; set;}

   public virtual PersonalInfo PersonalInfo {get; set;}
}

然后,您可以在PersonalInfo类...

中为集合添加地址
personalInfo.Addresses.Add(address1);
personalInfo.Addresses.Add(address2);

...在将树添加到数据库之前

infoRepo.InsertApplication(personalInfo);
uow.SaveChanges();

...或者您可以在添加之前在地址中设置外键:

infoRepo.InsertApplication(personalInfo);
address1.PersonalInfoId = personalInfo.Id;
address2.PersonalInfoId = personalInfo.Id;
addrRepo.InsertAddress(address1);
addrRepo.InsertAddress(address2);
uow.SaveChanges();

参考文献:

Relationship conventions