如何在模型中填充嵌套对象?

时间:2016-02-24 20:54:04

标签: c# asp.net entity-framework linq ado.net

我正在使用实体框架创建数据库第一个web api。我通过创建ADO.NET实体模型来创建我的模型,这些模型使用我选择的表上的字段自动填充。我希望能够获取其中一些字段并将它们分组到自定义对象中,因此当显示xml时,它们将显示为子节点。

一个例子是如果我有一个具有以下属性的类

public class Person
{
  public string firstname{get; set;}
  public string lastname{get; set;}
  public string street{get; set;}
  public string city{get; set;}
  public string zip{get; set;}
}

我想让它成为像这样的东西

public class Person
{
  public string firstname{get; set;}
  public string lastname{get; set;}
  public string address{get; set;}//where address contains street, city, and zip
}

我将如何实现这个新的Person类并使用我的dbcontext填充自定义对象的数据

3 个答案:

答案 0 :(得分:0)

无法将三个字符串属性更改为一个字符串属性。如何在街道有两个单词的情况下,如何将地址属性划分为街道城市和拉链?

您可以创建Address类(具有三个属性)并将其用作Person类。但是当您尝试重新生成/更新模型时,您会遇到问题 - 在这种情况下,最好先使用代码方法。

答案 1 :(得分:0)

属于关系

我认为您正在寻找的是Person与名为Address的新班级之间的关系。

要引用Address内的新Person课程,您需要执行以下操作:

public class Person
{
    ...
    public Guid AddressId { get; set; }
    public Address { get; set; }
}
然后,

实体框架会将Address与给定的AddressIdPerson相关联。

Address内你可以这样做:

public class Address
{
    public string City { get; set; }
    public string Street { get; set; }
    ...
}

渴望加载

要确保在加载Address时加载Person,您可以使用实体框架的Eager Loading功能,例如:

context.Person.Include(x => x.Address)

答案 2 :(得分:0)

使用可枚举的列表,如

public class Person

{

public string firstname {get;设置;}

public string lastname {get;设置;}

公共列表地址{get;组; }

}

公共类地址  {

public string street{get; set;}

public string city{get; set;}

public string zip{get; set;}

}