C# 在控制器中包含/访问一个或多个表
我的数据库中有产品、库存和存储的表 Stock表包含产品(ProductId)和存储(StorageID)的外键。 现在,我正在尝试以模式显示产品详细信息。 我现在可以在modal中显示的信息是ProductName、Price和StorageId。我不想显示StorageId,但我想显示产品的可用位置(StorageName)。所以我需要将存储表包含到我的视图中 问题是我不能在控制器中包含存储表,只能包含库存表。这有什么解决办法吗? 这是我的控制器C# 在控制器中包含/访问一个或多个表,c#,asp.net,asp.net-core,C#,Asp.net,Asp.net Core,我的数据库中有产品、库存和存储的表 Stock表包含产品(ProductId)和存储(StorageID)的外键。 现在,我正在尝试以模式显示产品详细信息。 我现在可以在modal中显示的信息是ProductName、Price和StorageId。我不想显示StorageId,但我想显示产品的可用位置(StorageName)。所以我需要将存储表包含到我的视图中 问题是我不能在控制器中包含存储表,只能包含库存表。这有什么解决办法吗? 这是我的控制器 public async Task<I
public async Task<IActionResult> Details(long? id)
{
var products = await _context.Products.Include(s => s.Stock)
.FirstOrDefaultAsync(s => s.ProductId == id);
return View(products);
}
您可以像这样使用EF Core的
thenclude()
扩展方法:
public async Task<IActionResult> Details(long? id)
{
var products = await _context.Products
.Include(p => p.Stock)
.ThenInclude(s => s.Storage)
.FirstOrDefaultAsync(p => p.ProductId == id);
return View(products);
}
公共异步任务详细信息(长?id)
{
var products=等待_context.products
.包括(p=>p.Stock)
.然后包括(s=>s.存储)
.FirstOrDefaultAsync(p=>p.ProductId==id);
返回视图(产品);
}
好的,让我们先看看我是否理解你的意思。您想从库存obj访问存储obj吗?通过查看代码,您是否尝试过这样的操作:s.Stock.Storage.StorageName
?
public partial class Stock
{
public long StockId { get; set; }
public long Quantity { get; set; }
public long? ProductId { get; set; }
public int? StorageId { get; set; }
public Products Product { get; set; }
public Storage Storage { get; set; }
}
}
public async Task<IActionResult> Details(long? id)
{
var products = await _context.Products
.Include(p => p.Stock)
.ThenInclude(s => s.Storage)
.FirstOrDefaultAsync(p => p.ProductId == id);
return View(products);
}