实体框架数据库首先发布加载相关实体(ASP.NET Web API)

布罗山

我一直在寻找这个相对简单的任务的答案,但没有成功。所以我想在这里问我的问题。我有一个简单的数据库,里面有两个表,Books和Authors。

在此处输入图片说明

我得到了由ADO.NET实体数据模型生成的模型。这是自动生成的Books模型:

public partial class Book
{
    public int BookID { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public int ISBN { get; set; }
    public int AuthorID { get; set; }

    public virtual Author Author { get; set; }
}

这是自动生成的Authors模型:

public partial class Author
{
    public Author()
    {
        this.Books = new HashSet<Book>();
    }

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

    public virtual ICollection<Book> Books { get; set; }
}

这是控制器的一部分,该控制器是用于获取JSON格式的所有书籍列表的方法。

    // api/books
    public IQueryable<Book> GetBooks()
    {
        // return db.Books.Include(x => x.Authors); Don't work
        return db.Books;
    }

这是我用于调用端点的JS:

$.getJSON("api/books")
.done(function (data) {
    console.log(data);
})
.fail(function (xhr) { console.log(xhr.responseText) });

没什么,只是尝试发出GET请求并接收所有书籍及其相关作者的清单。

这是错误消息的一部分:

{"Message":"An error has occurred.","ExceptionMessage":"The 'ObjectContent`1' type failed to serialize the response body for content type 'application/json; charset=utf-8'.","ExceptionType":"System.InvalidOperationException","StackTrace":null,"InnerException":{"Message":"An error has occurred.","ExceptionMessage":"Self referencing loop detected for property 'Author' with type 'System.Data.Entity.DynamicProxies.Author_5968F94A1BBB745A30D62CD59D0AC5F96A198B3F16F0EA2C2F61575F70034886'. Path '[0].Books[0]'.","ExceptionType":"Newtonsoft.Json.JsonSerializationException","StackTrace":"

我曾尝试在JSON中保留对象引用,但是这样会破坏响应。那是唯一的选择吗?

阿达姆

如果检查内部异常,它将显示:

Self referencing loop detected for property 'Author'

这告诉您,您的Author类引用返回了父类(即,反之亦然)。

在您的Web API配置(App_Start/WebApiConfig.cs)中,添加以下内容:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Prevent "Self referencing loop detected" error occurring for recursive objects
        var serializerSettings = new JsonSerializerSettings()
        {
            ReferenceLoopHandling = ReferenceLoopHandling.Ignore
        };
        config.Formatters.JsonFormatter.SerializerSettings = serializerSettings;
    }
}

这告诉JSON.NET忽略引用父对象的嵌套对象

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

asp.net odata Web api $ select相关实体失败

来自分类Dev

ASP.NET Web API 2 CRUD 操作与实体框架

来自分类Dev

ASP.NET Web API +实体框架:多个请求导致数据冲突

来自分类Dev

在ASP.NET Web API和实体框架中搜索数据

来自分类Dev

带数据库连接的asp.net WEB API

来自分类Dev

ASP.NET 5 Web API项目模板不允许使用实体框架

来自分类Dev

Web ApI实体框架(代码优先)值未出现在数据库中

来自分类Dev

无法使用实体框架 c# web api 连接到我的数据库

来自分类Dev

缓存Asp .Net Web API

来自分类Dev

使用实体框架和SQL Server数据库无法访问ASP.NET MVC Web应用程序中的数据

来自分类Dev

与ASP.NET Web API相关的表数据

来自分类Dev

使用asp.net Web API发布数据

来自分类Dev

ASP.NET Web API会话数据

来自分类Dev

ASP.NET MVC默认身份模型与自己的实体框架代码合并,首先是mssql数据库

来自分类Dev

在ASP.NET Web API中支持@ odata.bind(发布期间链接到现有实体)

来自分类Dev

ASP.NET 3.1 Web API,实体框架一对多关系未建立或以周期结束

来自分类Dev

在两个数据库之间复制数据ASP.NET CORE WEB API

来自分类Dev

带有MySQL数据库的ASP.NET Web API

来自分类Dev

ASP.Net Core Web API中的数据库查询过滤

来自分类Dev

使用EF数据库优先应用程序部署ASP.NET Web API

来自分类Dev

ASP.NET Web Api,线程中的数据库连接

来自分类Dev

未在localdb中创建ASP.NET Web API数据库

来自分类Dev

ASP.Net Core Web API中的数据库查询过滤

来自分类Dev

ASP.NET核心Web API:基于数据库权限的授权

来自分类Dev

asp.net Web Api和多个数据库

来自分类Dev

ASP.Net Web API异常过滤器,记录到数据库失败

来自分类Dev

ASP。Net Web API服务连接到Oracle数据库

来自分类Dev

通过Web Api和ASP.NET Core搜索数据库上的项目

来自分类Dev

使用 ASP.NET Web API 从 SQL 数据库返回图像

Related 相关文章

  1. 1

    asp.net odata Web api $ select相关实体失败

  2. 2

    ASP.NET Web API 2 CRUD 操作与实体框架

  3. 3

    ASP.NET Web API +实体框架:多个请求导致数据冲突

  4. 4

    在ASP.NET Web API和实体框架中搜索数据

  5. 5

    带数据库连接的asp.net WEB API

  6. 6

    ASP.NET 5 Web API项目模板不允许使用实体框架

  7. 7

    Web ApI实体框架(代码优先)值未出现在数据库中

  8. 8

    无法使用实体框架 c# web api 连接到我的数据库

  9. 9

    缓存Asp .Net Web API

  10. 10

    使用实体框架和SQL Server数据库无法访问ASP.NET MVC Web应用程序中的数据

  11. 11

    与ASP.NET Web API相关的表数据

  12. 12

    使用asp.net Web API发布数据

  13. 13

    ASP.NET Web API会话数据

  14. 14

    ASP.NET MVC默认身份模型与自己的实体框架代码合并,首先是mssql数据库

  15. 15

    在ASP.NET Web API中支持@ odata.bind(发布期间链接到现有实体)

  16. 16

    ASP.NET 3.1 Web API,实体框架一对多关系未建立或以周期结束

  17. 17

    在两个数据库之间复制数据ASP.NET CORE WEB API

  18. 18

    带有MySQL数据库的ASP.NET Web API

  19. 19

    ASP.Net Core Web API中的数据库查询过滤

  20. 20

    使用EF数据库优先应用程序部署ASP.NET Web API

  21. 21

    ASP.NET Web Api,线程中的数据库连接

  22. 22

    未在localdb中创建ASP.NET Web API数据库

  23. 23

    ASP.Net Core Web API中的数据库查询过滤

  24. 24

    ASP.NET核心Web API:基于数据库权限的授权

  25. 25

    asp.net Web Api和多个数据库

  26. 26

    ASP.Net Web API异常过滤器,记录到数据库失败

  27. 27

    ASP。Net Web API服务连接到Oracle数据库

  28. 28

    通过Web Api和ASP.NET Core搜索数据库上的项目

  29. 29

    使用 ASP.NET Web API 从 SQL 数据库返回图像

热门标签

归档