DBLinq not generating where clause

2019-05-16 09:42发布

I'm testing out DBLinq-0.18 and DBLinq from SVN Trunk with MySQL and Postgresql. I'm only using a very simple query but on both database DBLinq is not generating a Where clause. I have confirmed this by turning on statement logging on Postgresql to check exactly what request DBLinq is sending.

My Linq query is:

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;

The query works ok but the SQL generated by DBLinq is of the form:

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

There is no Where clause which means DBLinq must be pulling the whole table down before running the Linq query.

Has anyone had any experience with DBLinq and know what I could be doing wrong?

2条回答
我命由我不由天
2楼-- · 2019-05-16 10:06

I'd avoid using DBLinq for production code... many of Linq-To-SQL's features aren't implemented, and walking through the source code shows a low level of maturity... many of the methods are not implemented or marked as "unterminated".

...you've been warned!

查看更多
时光不老,我们不散
3楼-- · 2019-05-16 10:11

I found the problem and it's nothing to do with DBLinq.

I had been testing some stuff out from IronRuby and within that there is an assembly called Microsoft.Scripting.Core which duplicates the System.Data.Linq namespace (why it does that I don't know).

With a reference to the Microsoft.Scripting.Core assembly my test DBLinq app would compile and run fine but would have the where clause missing on the SQL. Removing the assembly reference resulted in the where clause correctly being generated.

查看更多
登录 后发表回答