2009-04-17 2 views
3

Я тестирую DBLinq-0.18 и DBLinq из SVN Trunk с MySQL и Postgresql. Я использую очень простой запрос, но в обеих базе данных DBLinq не генерирует предложение Where. Я подтвердил это, включив ведение журнала сообщений на Postgresql, чтобы точно проверить, какой запрос DBLinq отправляет.DBLinq не генерирует where 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; 

Запрос работает нормально, но SQL, порожденный DBLinq имеет вид:

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

Существует нет Где положение, которое означает, что DBLinq необходимо вытягивать перед тем как запустить запрос Linq.

Имеет ли кто-нибудь опыт работы с DBLinq и знает, что я могу делать неправильно?

+0

Возможно, проблема заключается в том, как вы контролируете представленный SQL, а не фактический сгенерированный. –

+0

Я довольно хорошо знаком с Postgresql, поэтому я использую эту db для проверки утверждений. Я включил журнал отладки для него, и я на 100% уверен, что запрос, который отправляет DBLinq, является оператором select без предложения where. – sipwiz

ответ

1

Я нашел проблему, и это не связано с DBLinq.

Я тестировал некоторые вещи из IronRuby, и в рамках этой сборки существует сборка под названием Microsoft.Scripting.Core, которая дублирует пространство имен System.Data.Linq (почему это делает то, что я не знаю).

Со ссылкой на сборку Microsoft.Scripting.Core мое тестовое приложение DBLinq будет компилироваться и работать нормально, но будет иметь предложение where, отсутствующее в SQL. Извлечение ссылки на сборку привело к тому, что предложение where было правильно сгенерировано.

0

Я бы не использовал DBLinq для производственного кода ... многие функции Linq-To-SQL не реализованы, а прохождение по исходному коду показывает низкий уровень зрелости ... многие из методов не реализовано или обозначено как «unterminated».

... вы были предупреждены!

+1

Я использую DbLinq в довольно сложной производственной среде около 3 месяцев. Основная проблема, которую я испытывал, - это производительность. Относительно говоря, это большой удар каждый раз, когда DbLinq генерирует SQL из выражения лямбда. Я заменяю его собственной библиотекой Linq-to-SQL, которая невероятно простая. Мне нужна поддержка очень простых запросов, но мне нужно, чтобы она была быстрой, и теперь мне нужно использовать SimpleDB от Amazon, поэтому моя библиотека вмещает Linq-to-SQL и Linq-to-SimpleDB. – sipwiz