我正在使用ef-core 2.1,我有一个通用的抽象基类,用于几种相似的实体类型。控制器继承此类,并使用通用约束调用受保护的方法,例如:
protected async Task<MyResult> GetBase<TEntity, TOut>(int? id)
where TEntity : class, IFoo, IBar
where TOut : class
{
// Construct query.
var query = id == null
? this.Context.Set<TEntity>()
: this.Context.Set<TEntity>()
.Where(p => p.Id == id);
// ...
}
并非所有实体都共享相同的导航属性,因此仅扩展接口约束以使得对.Include()
的多次调用将无效是不可能的。是否存在生成查询的方法,该查询自动包含所有相关数据而无需显式声明它们?