Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用实体框架的渴望加载时ASP NET内核崩溃_C#_Entity Framework_Asp.net Core - Fatal编程技术网

C# 使用实体框架的渴望加载时ASP NET内核崩溃

C# 使用实体框架的渴望加载时ASP NET内核崩溃,c#,entity-framework,asp.net-core,C#,Entity Framework,Asp.net Core,我有一个简单的电话: public IActionResult GetApplications() { var result = context.Applications.Include(a=> a.AplicantCompany) .Include(c=>c.CreditorCompany) .ToList(); return Ok(result); } 返回: {"result":[{"con

我有一个简单的电话:

 public IActionResult GetApplications()
 {
        var result = context.Applications.Include(a=> a.AplicantCompany)
            .Include(c=>c.CreditorCompany)
            .ToList();
        return Ok(result);
 }
返回:

{"result":[{"context":null,"applicationId":1003,"aplicantCompany":{"id":1,"creditCompid":12344,"name":"Kibon","industry":"ice cream","address":"RaiboW street","city":"Rio de Janeiro","province":"Rio de Janeiro","country":"Brazil","postalCode":"9034-394","style":"modern","yearsStablished":100,"numEmployees":600,"salesAnnual":"12343434","taxId":323,"functionOfScore":12,"dateCreated":"2018-08-09T14:14:38.3325627"},"applicantCompanyID":1,"creditRequested":33333,"creditTerm":1,"processStatus":1,"recommendation":1,"approved":true,"creditApproved":1200000,"dateCreated":"2018-08-09T14:18:32.900369","dateProcessed":"2018-12-12T00:00:00","creditorCompanyId":1,"creditorCompany":{"creditorCompanyId":1,"name":"IBM","address":"boulevard of dreams","city":"Toronto","province":"ON","country":"Canada","postalCode":"M1t 2t5","revenue":12343,"riskPreference":23,"creditLimit":123,"portofolioScore":5.5,"userName":"Ronald","password":"1234","dateCreated":"2018-08-09T12:09:18.0977008","applications":[
由于某种原因,实体在获取其余数据之前就已损坏

当我尝试使用某个属性时:

[HttpGet("/api/applications")]
public IActionResult GetApplications()
{
    var result = context.Applications.Include(a=> a.AplicantCompany.Name)
                .Include(c=>c.CreditorCompany.Name)
                .ToListAsync();
    return Ok(result);
}
我没有收到任何东西。有人知道发生了什么吗

注意:我现在收到以下错误:

System.InvalidOperationException:'属性'Name'不是实体类型'ApplicationCompany'的导航属性。“Include(string)”方法只能与“.”导航属性名称的分隔列表一起使用


但是属性存在…

您对
ToListSync
的调用是异步的;但是调用和方法本身是同步的。更改为
ToList()
或(更好)使其他所有内容都异步

您对
ToListAsync
的调用是异步的;但是调用和方法本身是同步的。更改为
ToList()
或(更好)使其他所有内容也异步化

Include()
方法用于加载相关数据,而不是加载相关数据的属性。 这意味着,要在实体应用程序上加载相关AplicantCompany和CreditorCompany的name属性,您的第一个查询是正确的。 它将包括两个相关实体的名称属性

var result = context.Applications.Include(a=> a.AplicantCompany)
                .Include(c=>c.CreditorCompany)
                .ToList();
其次,如果使用的是异步方法toListSync(),则需要等待该任务

[HttpGet("/api/applications")]
public async Task<IActionResult> GetApplications()
{
    var result = await context.Applications.Include(a=> a.AplicantCompany)
                .Include(c=>c.CreditorCompany)
                .ToListAsync();
    return Ok(result);
}
[HttpGet(“/api/applications”)]
公共异步任务GetApplications()
{
var result=await context.Applications.Include(a=>a.AplicantCompany)
.包括(c=>c.Credit或公司)
.ToListAsync();
返回Ok(结果);
}
首先

Include()
方法用于加载相关数据,而不是加载相关数据的属性。 这意味着,要在实体应用程序上加载相关AplicantCompany和CreditorCompany的name属性,您的第一个查询是正确的。 它将包括两个相关实体的名称属性

var result = context.Applications.Include(a=> a.AplicantCompany)
                .Include(c=>c.CreditorCompany)
                .ToList();
其次,如果使用的是异步方法toListSync(),则需要等待该任务

[HttpGet("/api/applications")]
public async Task<IActionResult> GetApplications()
{
    var result = await context.Applications.Include(a=> a.AplicantCompany)
                .Include(c=>c.CreditorCompany)
                .ToListAsync();
    return Ok(result);
}
[HttpGet(“/api/applications”)]
公共异步任务GetApplications()
{
var result=await context.Applications.Include(a=>a.AplicantCompany)
.包括(c=>c.Credit或公司)
.ToListAsync();
返回Ok(结果);
}

您对
toListSync()
的调用正在返回一个
任务
,该任务在您从该方法返回时可能尚未完成执行。最好的解决方案是使方法异步,如下所示:

public async Task<IActionResult> GetApplications()
{
   var result = await context.Applications.Include(a=> a.AplicantCompany)
      .Include(c=>c.CreditorCompany)
      .ToListAsync();
   return Ok(result);
}
事实上,根据,您可能可以这样做(我没有尝试过):


您对
toListSync()
的调用正在返回一个
任务
,该任务在您从该方法返回时可能尚未完成执行。最好的解决方案是使方法异步,如下所示:

public async Task<IActionResult> GetApplications()
{
   var result = await context.Applications.Include(a=> a.AplicantCompany)
      .Include(c=>c.CreditorCompany)
      .ToListAsync();
   return Ok(result);
}
事实上,根据,您可能可以这样做(我没有尝试过):


您是否遇到异常?如果名称只是一个字符串,您不包括它,您只包括Credit或Company您可以为我们提供
应用程序背后的模型吗
?更新了您不应该使用的答案
。包括(a=>a.AplicantCompany.Name)
Include
用于
导航属性
,它是不同模型之间的关系,而不是像name这样的自属性,后者是
公共字符串名称{get;set;}
。似乎您一直在尝试加载
应用程序的所有属性。如果在
上设置断点,则返回Ok(结果),您会看到预期的
应用程序吗?注意,您需要将
IActionResult
更改为
async Task
context.Applications。包括
等待上下文。
。你从哪里得到的坏结果?请尝试邮递员发送请求。您是否收到异常?如果名称只是一个字符串,您不包括它,您只包括Credit或Company您可以向我们提供
应用程序背后的模型吗
?更新了您不应使用
的答案。包括(a=>a.AplicantCompany.Name)
Include
用于
导航属性
,它是不同模型之间的关系,而不是像name这样的自属性,后者是
公共字符串名称{get;set;}
。似乎您一直在尝试加载
应用程序的所有属性。如果在
上设置断点,则返回Ok(结果),您会看到预期的
应用程序吗?注意,您需要将
IActionResult
更改为
async Task
context.Applications。包括
等待上下文。
。你从哪里得到的坏结果?请尝试邮递员发送请求。可能是visual进行了一些“更正”…无论如何,我更改为list并得到以下错误:System.InvalidOperationException:“属性“Name”不是实体类型为“AppliantCompany”的导航属性。“Include(string)”方法只能与导航属性名称的“.”分隔列表一起使用。要点是:属性存在!可能是visual进行了一些“更正”…无论如何,我更改为list并得到以下错误:System.InvalidOperationException:“属性“Name”不是实体类型“ApplicationCompany”的导航属性。“Include(string)”方法只能与导航属性名称的“.”分隔列表一起使用。要点是:属性存在!我认为您不能这样做,我非常确定您必须在
Include
中加载整个实体。如果
Name
是另一个实体,您可以执行
.Include(a=>a.AplicantCompany)。然后Include(c=>c.Name)
已经尝试过了。它说“名称”不是“应用公司”的财产。但确实如此。我认为您无法做到这一点,我非常确定您必须在
Include
中加载整个实体。如果
Name
是另一个实体,您可以执行
.Include(a=>a.AplicantCompany),然后Include(c=>c.Nam)