Я использую готовую загрузку с моим текущим проектом, и в этом проекте у меня есть дополнительное свойство навигации.Это модель:
public enum AnswerType
{
Preset,
Formula
}
public class Answer: Key
{
public int QuestionId { get; set; }
public int? CriteriaId { get; set; }
[Required] [MaxLength(255)] public string Text { get; set; }
[Required] public AnswerType Type { get; set; }
public int Order { get; set; }
public int Priority { get; set; }
[MaxLength(2083)] public string Image { get; set; }
public Criteria Criteria { get; set; }
public Question Question { get; set; }
public Scenario Scenario { get; set; }
public IList<AnswerFormula> Formulas { get; set; }
public IList<Image> Images { get; set; }
}
Таким образом, Ответ может иметь свойство навигации Критерии , но также может иметь значение null (nullable CriteriaId ).Мои «включения» захватываются так:
public IQueryable<T> List(params string[] includes)
{
IQueryable<T> source = (IQueryable<T>) this._dbEntitySet;
if (includes != null)
{
foreach (string include in includes)
source = source.Include<T>(include);
}
return source;
}
Я хотел бы сделать что-то вроде:
public IQueryable<T> List(params string[] includes)
{
IQueryable<T> source = (IQueryable<T>) this._dbEntitySet;
if (includes != null)
{
foreach (string include in includes)
source = source.IncludeExists(include).Include<T>(include);
}
return source;
}
Итак, если я назову свой Список метод, подобный этому:
List("Answers.Formulas");
Это будет работать, потому что у нас всегда есть формулы.Но если я позвоню
List("Answers.Criteria", "Answers.Formulas")
Это выдаст эту ошибку:
"Указанный путь включения недействителен. EntityType 'Piiick.Data.Answer' не объявляетсвойство навигации с именем «Критерии, ответы». "
Проблема в том, что можно обнулять Критерии .Итак, я хотел бы изменить сгенерированный SQL для проверки на нулевые значения, прежде чем пытаться выполнить включение.
Надеюсь, это имеет смысл