2012-03-21 3 views
4

질문이 있습니다. Asp.Net에서 ORM을 사용하는 한 사이트에서 작업하고 있습니다. Contains와 같은 몇 가지 FullTextSearch 함수를 사용해야합니다. 내가 그 ORM로를 생성 할 때 비트 값을 반환하지 않습니다 포함되어 있기 때문에, 그것은,Wrap SQL은 식으로 포함되어 있습니까?

SELECT 
    [Extent1].[ID] AS [ID], 
    [Extent1].[Name] AS [Name] 
    FROM [dbo].[SomeTable] AS [Extent1] 
    WHERE (Contains([Extent1].[Name], N'qq')) = 1 

SQL 그것을 구문 분석 할 수 없습니다와 같은 SQL 코드를 생성합니다. 그리고 불행히도 SQL 쿼리 생성 프로세스를 수정할 수는 없지만 SQL 쿼리 생성 프로세스를 수정할 수는 있습니다.

제 질문은 - CONTAINS 함수 호출을 다른 것으로 포장 할 수 있습니까?

내가 할 수있는

편집 .. 내가 포함하여 선택할 것이다 다른 함수를 만들려고하지만, 특정 테이블 \ 열 오브젝트를 필요로하고, 나는 각 테이블에 대해 하나 개의 기능을하고 싶지 않아 ORM에서 해당 함수의 결과 유형을 수정하십시오. 이전 샘플 결과 유형은 비트입니다. int, nvarchar 등으로 변경할 수 있습니다. 그러나 이해할 수 있듯이 SQL에는 부울 유형이 없으므로 지정할 수 없습니다.

+8

이것을 저장 프로 시저에 넣을 수 없으며 ORM에게 저장 프로 시저를 호출하도록 할 수 있습니까? ORM과 관련된 모든 질문으로 인해 ORM이 지난 10 년 동안 데이터베이스 기술을 사용하는 것처럼 보입니다. –

+0

'IIF' 또는'CASE'에서 사용할 수 있습니까? –

+1

네, 할 수는 있습니다 만, 이런 식으로, 나는 모든 SQL을 새로운 스토어드 프로 시저에 넣어야합니다. 가능하면 좀 더 일반적인 방법으로 특정 테이블없이 처리 할 수 ​​있습니다. –

답변

2

저장 프로 시저에 넣을 수 없습니까? ORM에게 저장 프로 시저를 호출하도록 할 수 있습니까? 그렇다면 ORM이 유효한 T-SQL의 하위 집합 만 이해한다는 사실을 염려 할 필요가 없습니다.

새로운 저장 프로 시저가 필요하다는 주장은 차단제라고 생각합니다. ORM 코드에 새로운 CONTAINS 표현식을 작성해야한다면, 다른 창에있는 CREATE PROCEDURE 문에서 그 표현식을 얼마나 많이 바꿀 수 있습니까? ORM에서이 작업을 수행하기를 원한다면 공급 업체에게 속도를 높이고 완전히 지원해야하는 언어에 대해보다 포괄적 인 적용 범위를 시작해야한다는 압박을 가해 야합니다.

+0

감사합니다. 사실 저는 두 개의 저장된 proc을 통해했습니다. 이 방법은 분명하지 않지만 괜찮습니다. –