이 코드를 원하는 SQL을 생성합니다 :EF는
string name ="M";
Expression<Func<Organization, bool>> getExpression1 = r => r.Name.Contains(name);
Expression<Func<Organization, bool>> getExpression2 = r => r.Name.Contains("M");
GetOrgListBy(getExpression);
GetOrgListBy(getExpression2);
public IEnumerable<Organization> GetOrgListBy(Expression<Func<Organization, bool>> filter)
{
return DataContext.Parties.OfType<Organization>().Where(filter).ToList();
}
질문 : 내가 도착 저장소 기능 에 간단한 표현을 전달하고있다 List<Organization>
에 일치하는 이름이 전달됩니다. getExpression1
(문자열 변수 사용)에 대한 sql 추적을 보면 표현식은 %
연산자가 생략 된 [Name] like plinq_variable
SQL 문 을 생성합니다. 내 의도는 [Name] like '%' + plinq_variable + '%'
SQL 문 I getExpression2
을 사용하여 (문자열을 하드 코딩) 그러나
를 생성하는 것입니다, 표현이 성공적으로 는 [Name] like N'%M%'
SQL 문을 생성합니다.
getExpression1
은 %
연산자를 생성하지 않는 이유는 무엇입니까? getExpression2
처럼 SQL에서 %
연산자를 생성하도록하려면 어떻게해야합니까?
내 실수는 전에 .ToList() 메서드를 확인했지만 표현식이 % 연산자를 실제로 추가한다는 것입니다. ToList()가 실행되면 SQL을 볼 수 없습니다. 더 정확한 그림을 얻기 위해 문자열에 객체 쿼리 추적을 사용하는 대신 SQL Server에서 추적을 확인해야합니다. – user1022777