【发布时间】:2020-08-28 02:28:01
【问题描述】:
我正在 .net core 3.1 中构建一个应用程序。我想显示资产列表以及每个资产进行视觉和完整的 pat 测试的最后日期。
我使用的表/模型如下:
public class Asset
{
public int AssetID { get; set; }
public string Title { get; set; }
public int AssetCatID { get; set; }
public string Manufacturer { get; set; }
public bool RequiresPAT { get; set; }
public AssetCat AssetCat { get; set; }
public PAT PAT { get; set; }
}
public class AssetCat
{
public int AssetCatID { get; set; }
public string CategoryTitle { get; set; }
public virtual ICollection<Asset> Assets { get; set; }
}
public class PAT
{
public int PATID { get; set; }
public int AssetID { get; set; }
public int CheckTypeID { get; set; }
public DateTime CheckDate { get; set; }
public string CheckedBy { get; set; }
public Asset Asset { get; set; }
public CheckType CheckType { get; set; }
}
我没有在此处包含 CheckType 表,但 CheckTypeID 1 = 完整测试,CheckTypeID 2 = Visal 测试
RequiresPAT 的每个资产对于这两种类型的测试都有多个条目,我需要列出资产以及每种类型的最后一次测试的日期。
var AssetQuery = _context.Assets
.Where(a => a.RequiresPAT)
.Include(a => a.AssetCat)
.Include(a => a.PAT) // needs to just include latest PAT record where CheckTypeID = 1 if it exists AS FullPAT
.Include(a => a.PAT) // needs to just include latest PAT record where CheckTypeID = 2 if it exists AS VisualCheck
.ToListAsync();
我已经看到,在 EF 5 中稍后会在包含上使用 .Where,但目前尚不可用。我尝试在 PAT 记录上使用 .OrderByDecending(p => p.CheckDate).FirstorDefault() 的变体,但我无法弄清楚如何将它们组合在一起。
我想返回一个模型以在索引样式页面上使用,理想情况下显示如下内容:
Model.Asset.AssetID | Model.Asset.AssetTitle | Model.Asset.AssetCat.CategoryTitle | Model.Asset.FullPat.CheckDate | Model.Asset.VisualCheck.CheckDate
我对 .net / ef / c# 很陌生,所以任何指针都将不胜感激。我确切地知道如何在 SQL 中为经典 ASP 编写视图,但试图为 .net 核心制定最佳方法
【问题讨论】:
标签: c# entity-framework asp.net-core razor-pages asp.net-core-3.1