Pergunta

Eu estou testando DbLinq-0,18 e DbLinq de Tronco SVN com MySQL e PostgreSQL. Eu só estou usando uma consulta muito simples, mas em ambos os banco de dados DbLinq não está gerando uma cláusula WHERE. Eu confirmei isso transformando o registo de declaração sobre PostgreSQL para verificar exatamente o que solicitar DbLinq está enviando.

query Meu 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;

A consulta funciona ok, mas o SQL gerado pelo DbLinq é da forma:

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

Não existe cláusula Where que significa DbLinq deve estar puxando a tabela inteira para baixo antes de executar a consulta Linq.

Alguém já teve alguma experiência com DbLinq e saber o que eu poderia estar fazendo de errado?

Foi útil?

Solução

Eu encontrei o problema e não tem nada a ver com DbLinq.

Eu tinha vindo a testar algumas coisas fora do IronRuby e dentro de que há uma reunião convocada Microsoft.Scripting.Core que duplica o namespace System.Data.Linq (por que é que isso eu não sei).

Com uma referência ao Microsoft.Scripting.Core montagem meu teste de aplicativo DbLinq seria compilar e multa prazo, mas teria o onde cláusula em falta no SQL. Removendo o conjunto de referência resultou na cláusula onde correctamente a ser gerado.

Outras dicas

eu evitaria usar DbLinq para código de produção ... muitos dos recursos do LINQ to SQL não são implementadas, e caminhar através da mostra de código fonte de um baixo nível de maturidade ... muitos dos métodos não são implementados ou marcado como "não terminada".

... você foi avisado!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top