是否可以在实体框架中使用扩展方法进行投影:
public class ProjectRepository
{
public IQueryable<ProjectDto> GetActiveProjects()
{
// db.Projects is a DbSet<Project>
// i want to use a projection to convert it to ProjectDto,
// I know I can do new ProjectDto but I would rather do an
// extension method and abstract that logic out
return from p in db.Projects
where p.Status == "Active"
select p.AsProjectDto();
}
}
现在我收到以下错误:
LINQ to Entities 无法识别方法“AsProjectDto”方法,并且此方法无法转换为存储表达式。
LINQ to SQL 似乎能够处理这个问题,但实体框架却不能。是否有某种方式我需要编写扩展方法以便它在 EF 中工作?
这是我的扩展方法:
public static class ProjectExtensions
{
public static ProjectDto AsProjectDto(this Project project)
{
return new ProjectDto
{
Id = project.Id,
Name = project.ProjectName
};
}
}