[英]Entity Framework Core Joining Related Table
我有一个带有Entity Framework Core的MVC应用程序。 当我运行它时,它不起作用(我可能曾经发誓它曾经起作用过),但在调试时,它的工作时间约为一半。 设置我的模型有什么问题,什么没做? 我按照循序渐进的指南进行操作,但现在找不到了。 抱歉,如果重复的话,我找不到正确的搜索关键字来查找类似内容。
型号/BaseProduct.cs
public abstract class BaseProduct
{
public int Id { get; set; }
public string Brand { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string Model { get; set; }
[Display(Name = "Main Image")]
public virtual FileDetails MainImage { get; set; }
public virtual FileDetails AdditionalImages { get; set; }
public virtual FileDetails Downloads { get; set; }
}
型号/FileDetails.cs
public class FileDetails
{
public int Id { get; set; }
public string FileName { get; set; }
public string FileDir { get; set; }
public string FileText { get; set; }
}
控制器/CompressorController.cs
public async Task<IActionResult> Index()
{
var list = await _context.Compressor.ToListAsync();
foreach (var compressor in list)
{
if (compressor.MainImage == null)
{
FileDetails img = new FileDetails(){FileDir = "", FileName = "NoImage.png", FileText = ""};
compressor.MainImage = img;
}
}
return View(list);
}
因此,有时它在FileDetails表上执行联接,有时却不执行。 Compressor表(继承了BaseProduct)具有FileDetails表的ID,因此似乎我没有花太多时间。
解决了:
问题似乎出在Rider身上。 在Visual Studio中运行代码,并一直在使用它。
我无法弄清楚它有时如何应用联接,有时甚至不联接,但是我很确定EF Core当前版本不支持延迟加载。 因此,请尝试加载。
var list = await _context.Compressor
.Include(x => x.MainImage)
.ThenInclude(x => x.AdditionalImages)
.ThenInclude(x => x.Downloads).ToListAsync();
我修改了代码,类似于Rainman的建议,但是仍然无法正常工作。
var list = await _context.Compressor
.Include(x => x.MainImage)
.Include(x => x.AdditionalImages)
.Include(x => x.Downloads).ToListAsync();
我使用Visual Studio而不是Rider来运行代码,并且看起来运行得非常一致。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.