我对EF Core和LINQ查询有问题.
我有这样的疑问:
_db.TrainingsExercises
.Include(t => t.ExerciseSteps)
.Where(te => te.UserId == userId);
这是在这两个型号上使用dbContext
:
public class TrainingExercise
{
[Key]
public Guid Id { get; set; }
public Guid UserId { get; set; }
public string Name { get; set; }
public bool IsPublic { get; set; }
[ForeignKey(nameof(UserId))]
public User User { get; set; }
public ICollection<TrainingExerciseStep> ExerciseSteps { get; set; }
public ICollection<TeamTrainingExercise>? TeamTrainings { get; set; }
}
public class TrainingExerciseStep
{
[Key]
public Guid Id { get; set; }
public Guid TrainingExerciseId { get; set; }
public int Order { get; set; }
public string? Name { get; set; }
public string? Image { get; set; }
[ForeignKey(nameof(TrainingExerciseId))]
public TrainingExercise TrainingExercise { get; set; }
public List<TrainingExerciseStepComponents> ExerciseStepComponents { get; set; }
}
appContext
是这样设置的:
public DbSet<TrainingExercise> TrainingsExercises { get; set; }
public DbSet<TrainingExerciseStep> TrainingExerciseSteps { get; set; }
builder.Entity<TrainingExercise>(entity =>
{
entity.HasMany(u => u.ExerciseSteps)
.WithOne(s => s.TrainingExercise);
});
这是创建一个带有左连接的简单查询,我在SQL Server上执行该查询,不需要几秒钟,但Linq查询需要一分钟以上的时间.
先谢谢你.
我试着go 掉了Include,然后它就完美地工作了.也加了AsNoTracking
,还是一样的.