2009-04-17 5 views
3

MySQL과 PostgreSQL을 사용하여 SVN 트렁크의 DBLinq-0.18과 DBLinq을 테스트하고 있습니다. 아주 간단한 쿼리 만 사용하고 있지만 두 데이터베이스에서 DBLinq은 Where 절을 생성하지 않습니다. DBLinq이 어떤 요청을 보내고 있는지 정확히 확인하기 위해 Postgresql의 명령문 로깅을 켜서 확인했습니다.DBLinq가 where 절을 생성하지 않습니다

내 LINQ 쿼리는 다음과 같습니다

MyDB db = new MyDB(new NpgsqlConnection("Database=database;Host=localhost;User Id=postgres;Password=password")); 

var customers = from customer in db.Customers 
       where customer.CustomerUserName == "test" 
       select customer; 

쿼리는 확인을 작동하지만 DBLinq에 의해 생성 된 SQL의 형식은 :

select customerusername, customerpassword .... from public.customers 

이 더 있습니다 어디 DBLinq가 당겨해야 의미 절 전체 테이블 아래로 Linq 쿼리를 실행하기 전에.

누구나 DBLinq에 대한 경험이 있고 내가 잘못하고있는 것을 알고 있습니까?

+0

아마도 실제 생성 된 SQL이 아닌 제출 된 SQL을 모니터링하는 방법이 문제 일 수 있습니다. –

+0

저는 PostgreSQL에 익숙하여 DB를 사용하여 구문을 확인합니다. 나는 그것을위한 디버그 로깅을 켜 놓았고, 나는 DBLinq가 보내고있는 질의가 where 절이없는 select 문이라는 것을 확신한다. – sipwiz

답변

1

문제점을 발견했으며 DBLinq와는 아무런 관련이 없습니다.

IronRuby에서 테스트 한 항목 중 System.Data.Linq 네임 스페이스를 복제하는 Microsoft.Scripting.Core라는 어셈블리가 있다는 것입니다 (왜 그런지 모르겠습니다).

Microsoft.Scripting.Core 어셈블리를 참조하면 내 테스트 DBLinq 응용 프로그램이 제대로 컴파일되고 실행되지만 SQL에 where 절이 누락됩니다. 어셈블리 참조를 제거하면 where 절이 올바르게 생성됩니다.

0

프로덕션 코드에 DBLinq를 사용하지 마십시오 ... 많은 Linq-To-SQL의 기능이 구현되지 않았으며 소스 코드를 살펴보면 낮은 수준의 성숙도를 보여줍니다. 구현되거나 "종단되지 않은"것으로 표시됩니다.

... 경고되었습니다.

+1

저는 DbLinq을 상당히 까다로운 제작 환경에서 약 3 개월 동안 사용해 왔습니다. 내가 가진 중요한 문제는 성과입니다. 상대적으로 말하자면 DbLinq가 람다 식에서 SQL을 생성 할 때마다 대히트입니다. 나는 그것을 믿을 수 없을만큼 기본적인 Linq-SQL 라이브러리로 교체 할 것이다. 아주 간단한 쿼리에 대해서만 지원이 필요하지만 빠른 속도가 필요합니다. 아마존의 SimpleDB를 사용해야하므로 내 라이브러리에서 Linq-to-SQL과 Linq-to-SimpleDB를 수용 할 수 있습니다. – sipwiz

관련 문제