实体框架核心.include()问题

约翰·莫里森

一直在尝试使用ef core,并且在include语句方面遇到了问题。对于此代码,我得到了2家符合我期望的公司。

public IEnumerable<Company> GetAllCompanies(HsDbContext db)
{
    var c = db.Company;
    return c;
}

这返回

[
    {
        "id":1,
        "companyName":"new",
        "admins":null,
        "employees":null,
        "courses":null
    },
    {
        "id":2,
        "companyName":"Test Company",
        "admins":null,
        "employees":null,
        "courses":null
    }
]

如您所见,有2家公司,并且所有相关属性均为null,因为我使用过任何包含项,这正是我所期望的。现在,当我将方法更新为:

public IEnumerable<Company> GetAllCompanies(HsDbContext db)
{
    var c = db.Company
        .Include(t => t.Employees)
        .Include(t => t.Admins)
        .ToList();

    return c;
}

这是它返回的内容:

[
    {
        "id":1,
        "companyName":"new",
        "admins":[
            {
                "id":2,
                "forename":"User",
                "surname":"1",
                "companyId":1
            }
        ]
    }
]

它仅返回一个公司,并且仅包括管理员。为什么不包括这两家公司及其雇员?

public class Company
{
    public int Id { get; set; }
    public string CompanyName { get; set; }
    public List<Admin> Admins { get; set; }
    public List<Employee> Employees { get; set; }
    public List<Course> Courses { get; set; }

    public string GetFullName()
    {
        return CompanyName;
    }
}

public class Employee
{
    public int Id { get; set; }
    public string Forename { get; set; }
    public string Surname { get; set; }
    public int CompanyId { get; set; }
    [ForeignKey("CompanyId")]
    public Company company { get; set; }

    public ICollection<EmployeeCourse> Employeecourses { get; set; }
}

public class Admin
{
    public int Id { get; set; }
    public string Forename { get; set; }
    public string Surname { get; set; }
    public int CompanyId { get; set; }
    [ForeignKey("CompanyId")]
    public Company Company { get; set; }
}
阿什莉·拜(Ashley Bye)

我不确定您是否看到过此问题的可接受答案,但是问题与JSON序列化程序如何处理循环引用有关。完整的详细信息和更多参考的链接可以在上面的链接中找到,我建议进行深入研究,但总之,添加以下内容startup.cs将配置序列化程序以忽略循环参考:

services.AddMvc()
    .AddJsonOptions(options => {
        options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
    });

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

实体框架核心.include()问题

来自分类Dev

C#实体框架核心.include()问题

来自分类Dev

实体框架核心无钥匙导航问题

来自分类Dev

实体框架核心递归包含问题

来自分类Dev

实体框架核心-与多对多关系的问题

来自分类Dev

实体框架核心原始 SQL 问题

来自分类Dev

实体框架核心.Include()正在过滤查询

来自分类Dev

实体框架核心5似乎不支持Where / Include

来自分类Dev

使用实体框架核心的Blazor并发问题

来自分类Dev

带有Concat的实体框架核心LINQ树表达问题

来自分类Dev

实体框架核心添加到.Net核心Web Api-IRelationalTypeMappingSource问题

来自分类Dev

具有外键约束的脚手架实体的实体框架核心问题

来自分类Dev

从版本3.1.2升级到5.0.3后,实体框架核心Include()无法正常工作

来自分类Dev

实体框架种子问题

来自分类Dev

实体框架删除问题

来自分类Dev

实体框架部署问题

来自分类Dev

MySQL - 实体框架的问题

来自分类Dev

实体框架核心ForEachAsync

来自分类Dev

实体框架核心收益

来自分类Dev

实体框架核心如何在不使用Include()。ThenInclude()的情况下从模型中列出一对多

来自分类Dev

实体框架核心-是否可以直接在子属性中查询列表/对象,而避免重复多次重复Include / ThenInclude?

来自分类Dev

实体框架ID列问题

来自分类Dev

实体框架和Iqueryable问题

来自分类Dev

实体框架带来的性能问题

来自分类Dev

实体框架.NET Core问题

来自分类Dev

实体框架5.0怪异的问题

来自分类Dev

MVC实体框架剃刀问题

来自分类Dev

实体框架重复列问题

来自分类Dev

实体框架查询加入问题