我有模型和上下文:
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");
}
我为所有EntityTemplate提供一项通用服务。 所以我在按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)'无法翻译,将在本地进行评估。
如何在数据库上做到这一点?