DBLinq没有生成where子句

时间:2009-04-17 14:42:07

标签: linq-to-sql dblinq

我正在使用MySQL和Postgresql测试SVN Trunk中的DBLinq-0.18和DBLinq。我只使用一个非常简单的查询,但在两个数据库上DBLinq都没有生成Where子句。我已经通过打开Postgresql上的语句记录来确认这一点,以确切地检查DBLinq发送的请求。

我的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

没有Where子句,这意味着在运行Linq查询之前,DBLinq必须将整个表拉下来。

有没有人对DBLinq有任何经验并且知道我可能做错了什么?

2 个答案:

答案 0 :(得分:1)

我发现了问题,这与DBLinq无关。

我一直在测试一些来自IronRuby的内容,其中有一个名为Microsoft.Scripting.Core的程序集,它复制了System.Data.Linq命名空间(为什么我这样做我不知道)。

通过引用Microsoft.Scripting.Core程序集,我的测试DBLinq应用程序将编译并运行正常,但SQL上将缺少where子句。删除程序集引用导致正确生成where子句。

答案 1 :(得分:0)

我避免将DBLinq用于生产代码......许多Linq-To-SQL的功能都没有实现,并且遍历源代码显示成熟度很低......许多方法都没有实现或标记为“未终止”。

......你被警告了!