【发布时间】:2018-08-28 15:40:14
【问题描述】:
我已将我的应用升级到 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();
stacktrace 很大,所以我只包含了错误和前一行。
System.InvalidOperationException:实体类型的属性“” 找不到“PromotionTopicJoin”。确保物业 存在并已包含在模型中。在 Microsoft.EntityFrameworkCore.Query.ExpressionVisitors.Internal.MemberAccessBindingExpressionVisitor.GetPropertyPath(表达式 表达式,QueryCompilationContext queryCompilationContext,出 QuerySourceReferenceExpression querySourceReferenceExpression)
仅供参考,我的 Microsoft.EntityFrameworkCore 和 Microsoft.EntityFrameworkCore.SqlServer 版本从 2.0.1 变为 2.1.0
【问题讨论】:
-
当你添加一个新的迁移时,它是否包含一些东西?
-
哪个属性?请在此处提及该物业
-
所以你得到的正是那个消息,带有一个空字符串?
-
@Gert 确认,消息是准确的(带有空字符串):(
-
@alsami 不,没什么
标签: c# asp.net-core entity-framework-core