0
我在它的一类myEntity所用的集合:ASP.NET Core仅返回集合的第一值在实体
public class MyEntity
{
[Key]
public int MyId { get; set; }
[Display(Name = "Process Name")]
public string ProcessName { get; set; }
public ICollection<Step> ProcessSteps { get; set; }
}
带班步骤A一对多关系:
public class Step
{
...
[ForeignKey("MyEntityForeignKey")]
public MyEntity { get; set; }
}
下面是API调用返回指定myEntity所:
public async Task<IActionResult> MyEntity(int? id)
{
if (id == null)
{
return Ok(await _context.MyEntity.ToListAsync());
}
var process = _context.MyEntity.Where(f => f.MyId == id).Include(g => g.ProcessSteps);
if (process.Count() == 0)
{
return NotFound();
}
return Ok(process.First());
}
运行此,一切看起来除了在t大他收集。在调试时,显示正确的值。即使我在这些集合中有2+项,它总是只返回来自MyClass的ProcessSteps集合中的第一个项目,当它返回响应 Ok。
编辑:
它看起来好像回到我的连接外键的反应是罪魁祸首。迭代并清零外键似乎已经修复了一些问题。
foreach (Step step in MyEntity.ProcessSteps)
{
Step.MyEntity = null;
}
return Ok(MyEntity.ProcessSteps)
如果你在'var process'后面放置一个断点并检查内存中的对象,在ProcessSteps下显示多个项目? –
不一定相关,但应该使用'FirstOrDefault()'并检查'null',而不是先运行Count(),然后再运行First()。后者将运行两个查询。 – poke
@NateBarbettini'process'只是一个尚未执行的查询语句,因此没有任何内容从数据库加载。 – poke