: '이름'속성이 어디적절한 SQL을 생성하지 못합니다
var data = await _context
.Assets
.Where(a => string.Compare(a.Name, "b", StringComparison.OrdinalIgnoreCase) > 0)
.Take(2)
.ToListAsync();
을 문자열. 즉, 'Name'속성이 'b'보다 큰 다음 2 개의 데이터베이스 항목을 가져 오려고합니다.
코드는 외부에서 예상대로 작동하지만 생성 된 SQL을 볼 때, 나는 다음을 참조 :
SELECT `a`.`F_ASSET_PK`, `a`.`F_ASSET_TYPE`, `a`.`F_CREATION_TIME`, `a`.`F_ID`, `a`.`F_IS_SOFT_DELETED`, `a`.`F_LAST_MODIFIED_TIME`, `a`.`F_LIBRARY_ID`, `a`.`F_NAME`, `a`.`F_OWNER_ID`, `a`.`F_TENANT_ID`
FROM `accounting`.`T_ASSET` AS `a`
절을 생성 된 SQL에없는 WHERE 내 LIMIT을 볼 수 있듯이. 그것들은 메모리에 적용되어 차선의 성능을냅니다.
C#에서 'Where'를 제거하면 쿼리가 LIMIT와 함께 올바르게 생성됩니다. 따라서 string.Compare(a.Name, "b", StringComparison.OrdinalIgnoreCase) > 0
을 통해 쿼리에서 문자열을 비교하려고하면 MySql 드라이버가 혼동을 느끼고 적절한 SQL을 생성하지 못합니다.
적절한 SQL을 발생시키는 문자열을 비교하는 데 사용할 수있는 다른 구문이 있습니까?
Microsoft.EntityFrameworkCore 1.1.0과 함께 사용하고 있습니다. 내 자신의 질문에