NHibernate 3CR1:转换为Sql,生成不必要括号的sql语法问题

时间:2010-11-25 07:38:49

标签: nhibernate linq-to-nhibernate

我的数据库架构如下所述:

表格< - >登录

< --->> Seller1

< --->> Seller2

< --->> Seller3

我有一个主要实体(Form),与另一个对象(Log)的一对一关系以及与孩子(卖家)的一对多关系。

我想提取其中一个卖家满足特定条件的所有表格。

不幸的是我遇到了一些问题:

如果我运行以下例程:

        [Test]
    public void Can_Get_Forms_Where_CorporationNumber_Is_510778087_Metohd0()
    {
        var CorporationNumber = "513514950";

        var list0 = formRepository
                                .Where(x => x.Sellers.Any(y => y.CorporationNumber == CorporationNumber))
                                .Fetch(x=> x.Sellers)
                                .Fetch(x => x.Log)
                                .Take(10).ToList();

        CollectionAssert.IsNotEmpty(list0);
    }

然后我会得到sql语法错误

Incorrect syntax near ','

使用NHProf我接受了查询并发现了问题。我将查询减少到了Count查询以专注于问题:

select
 TOP (
    10 /* @p0 */)
 cast(
    count(
        *)
     as INT)
 as col_0_0_ 
from BillOfSaleForm form0_ 
where exists (
    select
         (
            sellers1_.FormID,
             sellers1_.tdNum)

from BillOfSaleSeller sellers1_ 
where form0_.FormID=sellers1_.FormID and
     (
        (
            sellers1_.MisparTagid is null)
         and
             (
                '513514950' /* @p1 */ is null)
             or
                 sellers1_.MisparTagid='513514950' /* @p1 */)
            )

我们注意到那个部分

    select
     (
        sellers1_.FormID,
         sellers1_.tdNum)

有额外的括号

当然,如果我们删除已执行的括号查询。

0 个答案:

没有答案