来自查询的实体框架异常.此上下文仅支持原始类型或枚举类型

use*_*050 0 c# linq linq-to-entities entity-framework linq-to-sql

不知道为什么我在下面运行此查询时遇到此错误

无法创建"YogaBandy2017.Models.Profile.YogaProfile"类型的常量值.在此上下文中仅支持基元类型或枚举类型.

var requestedEvents = dbContext.YogaSpaceEvents
  .Where(i => i.RequestedInstructor == yogaProfile)
  .OrderByDescending(i => i.EventDateTime)
  .Select(i => new PendingEvent
  {
      SpaceName = i.YogaSpace.Overview.Title,
      SpaceImage = i.YogaSpace.YogaSpaceImages
                      .Where(j => j.IsMainImage)
                      .Select(j => j.ImageThumbnailCropped11)
                      .FirstOrDefault(),

      SpaceId = i.YogaSpace.YogaSpaceId,
      SpaceEventsHosted = i.YogaSpace.ClassesHosted,
      SpaceReviewNumber = i.YogaSpace.ReviewNumber,
      SpaceReviewPercent = i.YogaSpace.ReviewPercentage,
      SpaceNumberOfReviews = i.YogaSpace.NumberOfReviews,

      HostImage = i.YogaSpace.YogaProfile.YogaProfileImages
                    .Where(k => k.IsMainImage)
                    .Select(k => k.ImageThumbnailCropped)
                    .FirstOrDefault(),

      HostId = i.YogaSpace.YogaProfile.YogaProfileId,
      HostName = i.YogaSpace.YogaProfile.FirstName,

      EventDateTime = i.EventDateTime,
      Style = i.StyleMain.ToString(),
      Duration = i.Duration,

      EventId = i.YogaSpaceEventId
  })
  .ToList();
Run Code Online (Sandbox Code Playgroud)

AAA*_*ddd 5

你不能在一个子句中使用这样的实体Where(它不知道如何将它转换为SQL)

但是,他们很可能会拥有一处Id房产.所以你应该能够做到以下几点

dbContext.YogaSpaceEvents.Where(i => i.RequestedInstructor.Id == yogaProfile.Id)
Run Code Online (Sandbox Code Playgroud)