Я обновил свое приложение до Ef Core 2.1, и запрос, который раньше работал в EF 2.0, теперь выдает ошибки.
Я использую варианты одного и того же запроса в разных таблицах, и все они дают сбой с одной и той же ошибкой после обновления
Вот мои модели:
public class Promotion
{
public int PromotionId { get; set; }
// I've removed the other fields
public virtual ICollection<PromotionTopicJoin> PromotionTopicJoins {get; set;}
}
public class PromotionTopic
{
public int PromotionTopicId { get; set; }
[MaxLength(50)]
[Required]
public string Name { get; set; }
public virtual ICollection<PromotionTopicJoin> PromotionTopicJoins {get; set;}
}
public class PromotionTopicJoin
{
public int PromotionId { get; set; }
public Promotion Promotion { get; set; }
public int PromotionTopicId { get; set; }
public PromotionTopic PromotionTopic { get; set; }
}
И вот запрос, который я запускаю:
return await _context.PromotionTopics
.Where(p => p.PromotionTopicId == TopicId)
.SelectMany(p => p.PromotionTopicJoins)
.Select(pc => pc.Promotion)
.Select(p => new PromotionDTO
{
PromotionId = p.PromotionId,
// I've removed all the other fields
Topics = p.PromotionTopicJoins.Select(itj => itj.PromotionTopic.Name).ToList()
})
.Where(x => x.Is_Active)
.OrderByDescending(x => x.Created)
.ToListAsync();
Трассировка стека довольно велика, поэтому я включил только ошибку и предыдущую строку.
System.InvalidOperationException: свойство '' для типа сущности
«PromotionTopicJoin» не найден. Убедитесь, что собственность
существует и был включен в модель. в
Microsoft.EntityFrameworkCore.Query.ExpressionVisitors.Internal.MemberAccessBindingExpressionVisitor.GetPropertyPath (Expression
выражение, QueryCompilationContext queryCompilationContext, out
QuerySourceReferenceExpression querySourceReferenceExpression)
К вашему сведению, мои версии Microsoft.EntityFrameworkCore
и Microsoft.EntityFrameworkCore.SqlServer
перешли с 2.0.1 на 2.1.0