У меня есть модели и контекст:
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)' не может быть переведено и будет оценено локально.
Как я могу сделать это в базе данных?