提前感谢您对此的任何帮助。我们一直在玩EF7和ASP .Net 5.0(Core 1.0?),并遇到了以下障碍。
我有一个具有多个属性和子实体的应用程序模型。出于这个问题的目的,有2个子实体:ApplicationFuncArea和ApplicationLocation(关系模型,因为它有多对多的关系)。
父类:
public class Application
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string Comments { get; set; }
public string OS { get; set; }
public string DatabaseName { get; set; }
public string Hardware { get; set; }
public string Documentation { get; set; }
public ICollection<ApplicationLocation> AppLocations {a get; set; }
public ICollection<ApplicationFuncArea> AppFuncAreas { get; set; }
public Employee SolutionArchitect { get; set; }
public bool IsInHouseApp { get; set; }
}
子实体非常简单:
public class ApplicationFuncArea
{
public int Id { get; set; }
public int AppId { get; set; }
public Application App { get; set; }
public int FuncAreaId { get; set; }
public FuncArea FuncArea { get; set; }
}
public class ApplicationLocation
{
public int Id { get; set; }
public int AppId { get; set; }
public Application App { get; set; }
public int LocationId { get; set; }
public Location Location { get; set; }
}
Application类是父类,它具有上面2个类的ICollections作为属性,如下所示:
...
public ICollection<ApplicationLocation> AppLocations { get; set; }
public ICollection<ApplicationFuncArea> AppFuncAreas { get; set; }
...
最终,我们尝试在父表中提取所有应用程序的列表,其中LocId(来自子ApplicationLocation实体)和FuncAreaId(来自子ApplicationFuncArea实体)等于特定值。
我原本以为这可行:
return _context.Apps
.Include(a => a.AppFuncAreas)
.Include(a => a.AppLocations)
.Where(a => a.AppFuncAreas.Any(fa => fa.FuncAreaId == FuncAreaId) && (a.AppLocations.Any(l => l.LocationId == LocId)));
然而它抛出了以下隐式转换错误:
严重级代码描述项目文件行抑制状态 错误CS0266无法将类型“
System.Linq.IQueryable<AtlasAppPortfolio.Models.Application>
”隐式转换为“System.Collections.Generic.ICollection<AtlasAppPortfolio.Models.Application>
”。存在显式转换(您是否错过了演员?)
看起来应该很容易,但我似乎无法弄清楚是什么。