데이터베이스 서버에서 실행될 때 끝낼 매개 변수화 된 SQL 문자열을 만들려고합니다.이 문자열은 실행될 때 원하는 결과를 반환합니다.C# 엔터티 프레임 워크에서 전체 텍스트 검색을위한 SQL 문자열 형식
SELECT * FROM OrderHeader WHERE FacilityId = 9 AND CONTAINS(*,'"Rich*"')
아래의 세 가지 시도를 시도했지만 결과가 위의 목표 문과 같이 나오지 않을 수 있으며 그 결과는 첫 번째 문에 syntax error near '@p1'
이고 두 번째 두 문에는 0이됩니다. .
시도 1
string sql = "SELECT * " +
"FROM OrderHeader " +
"WHERE FacilityId = @p0 AND CONTAINS(*,\"@p1*\")";
var orderByCustomerFullTextQuery = base.DbSet.SqlQuery(sql, intFacilityId, strSearchTerm).AsQueryable();
exec sp_executesql N'SELECT * FROM OrderHeader WHERE FacilityId = @p0 AND CONTAINS(*,"@p1*")',N'@p0 int,@p1 nvarchar(4)',@p0=9,@p1=N'Rich'
시도 2
string sql = "SELECT * " +
"FROM OrderHeader " +
"WHERE FacilityId = @p0 AND CONTAINS(*,'\"@p1*\"')";
var orderByCustomerFullTextQuery = base.DbSet.SqlQuery(sql, intFacilityId, strSearchTerm).AsQueryable();
exec sp_executesql N'SELECT * FROM OrderHeader WHERE FacilityId = @p0 AND CONTAINS(*,''"@p1*"'')',N'@p0 int,@p1 nvarchar(4)',@p0=9,@p1=N'Rich'
시도 3
string sql = "SELECT * " +
"FROM OrderHeader " +
"WHERE FacilityId = @p0 AND CONTAINS(*,\'\"@p1*\"\')";
var orderByCustomerFullTextQuery = base.DbSet.SqlQuery(sql, intFacilityId, strSearchTerm).AsQueryable();
exec sp_executesql N'SELECT * FROM OrderHeader WHERE FacilityId = @p0 AND CONTAINS(*,''"@p1*"'')',N'@p0 int,@p1 nvarchar(4)',@p0=9,@p1=N'Rich'
나는 그것은 당신이 쿼리를 실행하는 것과 동일을 주어야한다 귀하의 쿼리에서 *를 모두 제거해야하고이 매개 변수를 매개 변수에 추가해야한다고 생각하면 plz가 대답으로 게시 할 수 있는지 알려 주시기 바랍니다 – msoliman
@msoliman 그래서 저는 여러분이 저의 질문에 찬성표를 던졌다 고 가정합니다. 너는 너의 대답을 지웠어? 그렇다면 냉기는 아닙니다. Joel은 먼저 실용적인 해결책을 찾았습니다. 따라서 그의 대답이 받아 들여졌습니다. 나는 네가 제대로 된 줄 알았지 만 너는 너무 늦었다. –
나는 다른 대답이 당신에 의해 올바른 것으로 확인되었고 잘 작동 했으므로 방금 삭제했습니다. 그래서 내 이름도 계속 유지해야합니까? – msoliman