Entity Frameworkのプロジェクションに拡張メソッドを使用することは可能ですか:
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 はこれを処理できるようですが、Entity Framework は処理できません。EF で機能するように拡張メソッドを記述する必要がある特定の方法はありますか?
これは私の拡張方法です:
public static class ProjectExtensions
{
public static ProjectDto AsProjectDto(this Project project)
{
return new ProjectDto
{
Id = project.Id,
Name = project.ProjectName
};
}
}