问题描述
任何人都可以指导我如何在规范模式中添加 .ThenInclude(s) ;我正在使用实体框架核心。
public interface ISpecification<T>
{
Expression<Func<T,bool>> Criteria { get; }
List<Expression<Func<T,object>>> Includes { get; }
}
public abstract class BaseSpecification<T> : ISpecification<T>
{
protected BaseSpecification(Expression<Func<T,bool>> criteria)
{
Criteria = criteria;
}
public Expression<Func<T,bool>> Criteria { get; }
public List<Expression<Func<T,object>>> Includes { get; } = new List<Expression<Func<T,object>>>();
public List<string> IncludeStrings { get; } = new List<string>();
protected virtual void AddInclude(Expression<Func<T,object>> includeExpression)
{
Includes.Add(includeExpression);
}
}
}
任何帮助将不胜感激。
解决方法
找到了解决上述问题的方法。下面是解决方案。在 BaseSpecification 类中添加
protected virtual void AddInclude(string includeString)
{
IncludeStrings.Add(includeString);
}
之后在规范过滤器中使用如下所示的然后包含。
AddInclude("Contacts.PrefixTitle");
这将包括主要类别中的联系人,即我案例中的帐户,然后包括联系人,然后是 PrefixTitle