2011-05-03 2 views
1

안녕하세요 : devArt의 Oracle Connect를 사용하여 Entity Framework 4.1 POCO 및 Oracle과 함께 작업하고 있습니다.Entity Framework, devArt 및 Oracle VarChar 매개 변수

Oracle 열 유형이 Char (고정 길이) 인 특정 쿼리에 문제가 있습니다. 생성 된 SQL 쿼리에 사용되는 매개 변수는 Char 대신 VarChar 형식으로되어 있으며 쿼리에서 제로 행을 반환합니다. EntityFramework/DevArt가 매개 변수를 채우도록 강제 할 수있는 방법이 있습니까?

다음은 문제의 예입니다 (사용자 이름을 묻는 중입니다). 이 코드는 행을 반환해야하지만 그렇지 않습니다.

 

string aUserName = "Test"; 
var query = from u in users 
      where u.UserName == aUserName 
      select u; 
 

내가 코드의 첫 번째 줄 변경하는 경우 :

string aUserName = "Test".PadRight(20); 

그런 다음 작동을 (오라클 열이 숯불이다 (20)). 나는 패딩을 할 필요가 없다. (나는 SQL Server를 사용할 필요가 없다.) 내가 할 수있는 구성 변경이 있습니까? 연결 문자열 스위치? 내 POCO의 속성?

+0

열이 CHAR 인 이유가 무엇입니까? 단순히 varchar2로 변경하는 것이 허용됩니까? – Harrison

+0

내가 할 수 있겠지만,이 코드는 수 많은 코드와 여러 설치 (ISV)를 가진 레거시 데이터베이스입니다. 그래서 나는 우리가 가진 스키마를 가지고 굴러 가야한다. – JMarsch

답변

1

우리는 포럼에서 here님께 서 응답하셨습니다.
제공된 솔루션에 문제가 발생하면 알려주십시오.

+0

감사합니다 - 귀하의 포럼에 응답 – JMarsch

2

두 가지 옵션이 있습니다.
1. 사용자 이름 문자열 변수를 올바르게 입력하십시오.
2. 빈 문자를 제거하십시오 - 사용자 이름 필드를 바로 수정하십시오.

기타 옵션 :

string aUserName = "Test"; 
var query = users.select(x => string.Join(string.Empty, x.UserName).TrimEnd()). 
        where(x => x==aUserName) 

이 도움이

희망 (이 당신에게 사용자 이름이 아닌 전체 사용자 개체를 반환합니다).

+1

Padright가 제 상황에 가장 적합한 솔루션으로 끝났기 때문에 당신의 답변을 답글로 표시했습니다. (필자는 SQL Server와 Oracle을 모두 지원해야합니다.) Oracle 전용 개발에 도움이되는 다른 솔루션을 찾았습니다. [Column] 특성을 열에 적용하고 "CHAR"를 typename 명명 된 매개 변수로 전달할 수 있습니다. 그러면 Oracle에서 모든 것이 작동하지만 SQL Server에서 런타임 예외가 발생합니다. – JMarsch

관련 문제