Основное абстрактное поле EF не может быть переведено и будет оцениваться локально - PullRequest
0 голосов
/ 02 мая 2019

У меня есть модели и контекст:

public abstract class EntityTemplate : BaseEntity
{
    //-/-/-/-/
    public abstract int EntityId { get; set; }
}

public class ProjectTemplate : EntityTemplate
{
   //-/-/-/-/
   public override int EntityId
    {
        get => ProjectId;
        set => ProjectId = value;
    }
}
public class MyDbContext : DbContext
{
    public DbSet<ProjectTemplate> ProjectTemplates { get; set; }

    //-/-/-/-/
    modelBuilder.Entity<EntityTemplate>().ToTable("EntityTemplates");
}

У меня есть один универсальный сервис для всех шаблонов EntityTemplates. Так что у меня проблема с фильтрацией по Id

//-/-/-/-/
where TEntityTemplate : EntityTemplate, new()
//-/-/-/-/
private readonly IRepository<TEntityTemplate> _entityTemplatesRepository;
//-/-/-/-/

var aphiTemplates = _entityTemplatesRepository
            .Read() //returns IQueryable<T> from context
            .AsNoTracking()
            .Where(x => x.EntityId == message.EntityId).ToList();

После этого запроса у меня есть предупреждение:

Выражение LINQ 'where ([x] .EntityId == __message_EntityId_0)' не может быть переведено и будет оценено локально.

Как я могу сделать это в базе данных?

...