我在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; }
答案 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();
参考文献: