Моя схема базы данных описана ниже:
Форма <-> Журнал
<--- >> Seller1
<--- >> Seller2
<--- >> Seller3
У меня есть основная сущность (Форма), отношения один к одному с другим объектом (Журнал) И отношения один-ко-многим с детьми (Продавцы).
Я хочу вытащить все Формы, которые один из их Продавцов отвечает определенным условиям.
К сожалению, у меня возникли некоторые проблемы:
Если я запускаю следующую процедуру:
[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, я взял запрос и нашел проблему. Я сократил свой запрос до количества запросов, чтобы сосредоточиться на проблеме:
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)
Имеет дополнительные скобки !.
Конечно, если убрать выполненный запрос в скобках.