상점 기능을 사용해 볼 수 있습니다. Ladislav Mrnka는 그들에 대해 this question에 잘 설명합니다.
기본적으로 Contains를 EDMX에 정의하고 EF가 SQL Server가 이해할 수있는 대상에 매핑하는 방법을 알려줍니다 (참고 :이 예제에서는 FullTextContains
을 C#의 Contains 메서드와 혼동하지 않도록 호출합니다. 이) 필요가 아닌지 '는 잘 모르겠어요 :
public static class EdmFunctions
{
[EdmFunction("YourModel", "FullTextContains")]
public static string FullTextContains(string field, string value)
{
throw new NotSupportedException("This function is only for L2E query.");
}
}
은 그럼 당신은 사용할 수 있습니다 : 당신이 Linq를 통해 호출 할 수 있도록
그런 다음
<Function Name="FullTextContains" ReturnType="Edm.String">
<Parameter Name="field" Type="Edm.String" />
<Parameter Name="value" Type="Edm.String" />
<DefiningExpression>
Contains(field, value)
</DefiningExpression>
</Function>
당신이 C#에서 스텁 방법을 그 방법은 Linq 쿼리와 EF에서 올바르게 번역해야합니다.
어떤 이유에서인지, 나는 매개 변수와 하드 코드 된 상수를 정의 식으로 제거하려고 시도했으나 여전히 생성 된 sql이 잘못되었다고 말하고 있습니까? –
SQL 서버의'CONTAINS'는 함수가 아니기 때문에 폭발 할 것으로 예상됩니다. 그것은 술어입니다. 그것을 사용자 정의 함수로 감싸십시오. –