在 .NET 中的 JSON 响应中嵌入外键对象

Embed Foreign Key Objects in JSON Response in .NET

我想将外键对象嵌入到我 API 的 .NET JSON 响应中。我来自 Rails 背景并且格式化 JSON 响应以包含任何找到的外键记录是相当简单的。但是,我似乎无法找到执行此操作的方法。我有一个外键关系设置如下模型:

public class Person
{
[Key]
public int id {get; set;}
public string name {get; set;}
}

public class House
{
[Key]
public int id {get; set;}
public string address {get; set;}
[Required]
public int personId {get; set;}
[ForeignKey("peronsId")]
public Person person {get; set;}
}

但是,当我 运行 一个 GET 请求时,我得到的房子是这样的:

{
"id":1,
"address":"Middle of Nowhere",
"personId":3
}

当我想要的是:

{
"id":1,
"address":"Middle of Nowhere",
"person":{
"id":3,
"name":"Some Dude"
}
}

或者一些类似的结构。我如何在 .NET 中完成此操作?

在 C# 中使用 .NET 4.5 Web API 2 和 Entity Framework。

尝试制作导航 属性 virtual:

public class House
{
  //...
  [ForeignKey("peronsId")]
  public virtual Person person {get; set;}
}

如果您没有禁用延迟加载行为,当取消引用该实体的导航 属性 时,EF 会自动加载相关实体。

另一个选项是使用 Include 扩展方法预先加载导航 属性:

datacontext.Houses.Include(h=>h.person);

我建议您查看此 link 以了解有关此主题的更多信息