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

标签 c# .net json entity-framework foreign-keys

我想将外键对象嵌入到 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 结合使用。

最佳答案

尝试将导航属性设为虚拟:

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

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

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

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

我建议你检查这个link有关此主题的更多信息

关于c# - 在 .NET 中的 JSON 响应中嵌入外键对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28683236/

相关文章:

c# - 为什么注册模块会禁用重写?

c# - 未找到 System.ComponentModel.DataAnnotations.Schema

c# - 如何在文档中找到未知的 XML 命名空间?

c# - 从 C# 调用 c 函数

c++ - nlohmann json 从文件中读取

php - 使用 Php 将嵌套的 JSON 插入 mySQL

c# - 如何在 C# 和 ASP.NET MVC 中读/写 cookie

c# - 在进程终止时释放资源

c# - 重写GenerateEmailConfirmationTokenAsync

c++ - Docker 远程 API JSON 架构定义