我的数据库架构如下所述:
表格< - >登录
< --->> 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)
有额外的括号!
当然,如果我们删除已执行的括号查询。