im으로 변환 할 수 없습니다. 먼저 Entity Framework 디자이너를 사용하여 db 개체에서 시작하는 사용자 지정 모델 개체를 만들어야합니다. 너무 많은 필드를 쿼리하므로 IEnumerable을 사용하고 싶지 않습니다.엔티티 탐색 속성 IQueryable은 저장소 표현식
public static IQueryable<CustomEmployeeModel> ToModel(this IQueryable<employee> Employee)
{
return Employee.Select(u => new CustomEmployeeModel()
{
ID = u.ID,
Name = u.Name
});
}
하지만 항상 오류 얻을 : "엔티티에 LINQ는 인식하지 않습니다이 기능을 사용하여
using (var db = new dbEntities())
{
var departments= db.departments
.Include(p => p.employee)
.Where(...)
.Select(p => new CustomDepartmentModel()
{
ID = p.ID,
Employees = p.employee
.Select(q => new CustomEmployeeModel()
{
ID = q.ID,
Name= q.Name
}).ToList()
});
return departments.ToList();
}
:
는목표는이 함수 내에서 내부 선택을 제거하는 것입니다 메소드 ToModel ".
내가 운이없이 이러한 방법을 사용하려고 않았다
public static System.Linq.Expressions.Expression<Func<IQueryable<employee>, IQueryable<CustomEmployeeModel>>> ToModel()
{
return p => p.Select(u => new CustomEmployeeModel()
{
ID = u.ID,
Name = u.Name
});
}
하지만 난 정말 방법을 알아낼 수 없습니다
Employees = p.employee.AsQueryable().ToModel().ToList() //1
Employees = db.Entry(p).Collection(f => f.employee).Query().ToModel().ToList() //2
가 나는 이런 식으로 뭔가를 사용할 필요가 있다고 생각 그것을 사용하십시오.
큰 프로젝트에서 LINQKit을 사용하는 것이 안전할까요? 엔티티 패키지 업데이트로 코드가 손상되지 않도록해야합니다. 확장 방법은 어떻습니까? 이 방법으로 호출 할 수 있다고 생각합니까? p.employee.ToModel()? – Simone
@Simone LINQKit은 EF와 관련이 없으며 모든 IQueryable과 작동하므로 모든 버전의 EF에서 작동해야합니다. 그리고 직접 확장 메서드를 사용하여이 작업을 수행하는 방법을 알지 못합니다. LINQKit은'Invoke()'의 호출을 찾아서 처리하지만'ToModel()'을 처리해야한다는 것을 모릅니다. – svick