
Arseniy
08.03.2017
01:52:56
если ты формируешь включения, то надо использовать "ИЛИ"
а я чет так давно в деревьями выражений в сишарпе не работал, что не очень понимаю, как это просто сделать
потому вот так

Владимир
08.03.2017
01:58:42
Теперь наоборот, на единственном эксклуде возвращает ноль объектов.

Google

Arseniy
08.03.2017
01:59:06
а чо за запрос выходит?

Владимир
08.03.2017
02:00:00
{SELECT
[Extent1].[Id] AS [Id],
[Extent1].[Md5] AS [Md5],
[Extent1].[Size] AS [Size],
[Extent1].[Path] AS [Path],
[Extent1].[OriginalName] AS [OriginalName],
[Extent1].[CollectionId] AS [CollectionId]
FROM [dbo].[File] AS [Extent1]
WHERE ( NOT EXISTS (SELECT
1 AS [C1]
FROM [dbo].[BindedTags] AS [Extent2]
WHERE ([Extent2].[TagId] IN (42)) AND ([Extent2].[TargetId] = [Extent1].[Id])
)) AND ( EXISTS (SELECT
1 AS [C1]
FROM ( SELECT 1 AS X ) AS [SingleRowTable1]
WHERE 1 = 0
))}

Arseniy
08.03.2017
02:02:26
https://gist.github.com/stdray/766441295cec0b7ed7bd5904abba04c8#file-q-cs-L23
добавил условия
стой
криво добавил

Владимир
08.03.2017
02:03:14
Стою

Arseniy
08.03.2017
02:03:56
https://gist.github.com/stdray/766441295cec0b7ed7bd5904abba04c8
так норм

Владимир
08.03.2017
02:07:16
Теперь инклуд 1 тега возвращает ноль объектов..
{SELECT
[Extent1].[Id] AS [Id],
[Extent1].[Md5] AS [Md5],
[Extent1].[Size] AS [Size],
[Extent1].[Path] AS [Path],
[Extent1].[OriginalName] AS [OriginalName],
[Extent1].[CollectionId] AS [CollectionId]
FROM [dbo].[File] AS [Extent1]
WHERE ( NOT EXISTS (SELECT
1 AS [C1]
FROM [dbo].[BindedTags] AS [Extent2]
WHERE [Extent2].[TargetId] = [Extent1].[Id]
)) AND ( EXISTS (SELECT
1 AS [C1]
FROM [dbo].[BindedTags] AS [Extent3]
WHERE ([Extent3].[TagId] IN (42)) AND ([Extent3].[TargetId] = [Extent1].[Id])
))}
Ну да, в эксклуде при нуле возвращается
var query = tags;

Arseniy
08.03.2017
02:09:07
робит или как?

Google

Arseniy
08.03.2017
02:11:13
если робит, можно разобраться с забытым условием

Владимир
08.03.2017
02:12:55
Не, не робит.

Arseniy
08.03.2017
02:15:04
лел, понел
зря я эти хуйни объёдинил

Владимир
08.03.2017
02:16:49
да, тут условий пиздец наворачивается

Arseniy
08.03.2017
02:17:41
не, просто я туплю

Владимир
08.03.2017
02:18:32
if(!tagIds.Any() && !tagIdValues.Any() && !include)
{
query = (new List<BindedTag?)).AsQueryable();
}
Добавил вот такую херню, инклуд заработал, но эксклуд теперь не совпадает с прежним вариантом. По количеству процентов на 10.
Хз из-за чего.
{SELECT
[Extent1].[Id] AS [Id],
[Extent1].[Md5] AS [Md5],
[Extent1].[Size] AS [Size],
[Extent1].[Path] AS [Path],
[Extent1].[OriginalName] AS [OriginalName],
[Extent1].[CollectionId] AS [CollectionId]
FROM [dbo].[File] AS [Extent1]
WHERE ( NOT EXISTS (SELECT
1 AS [C1]
FROM [dbo].[BindedTags] AS [Extent2]
WHERE ([Extent2].[TagId] IN (42)) AND ([Extent2].[TargetId] = [Extent1].[Id])
)) AND ( EXISTS (SELECT
1 AS [C1]
FROM [dbo].[BindedTags] AS [Extent3]
WHERE [Extent3].[TargetId] = [Extent1].[Id]
))}
Я кажется понял.
С таким запросом он не выберет файлы вообще без тегов. Хотя должен, если иклуд тегов нет.


Arseniy
08.03.2017
02:25:35
https://gist.github.com/stdray/766441295cec0b7ed7bd5904abba04c8
надеюсь базовая логика заробит
чому мне сраный гист порти форматирование непонятно, хоть студию запускай, чтобы мне сишурп отравняли

Владимир
08.03.2017
02:35:09
В общем, я сделал вот так:
var query = files;
if (excludeFilter != null && filterModes.Item2.Any())
query = query.Where(f => !excludeFilter.Contains(f.Id));
if (inclideFilter != null && filterModes.Item1.Any())
query = query.Where(f => inclideFilter.Contains(f.Id));
И оно заработало так как надо
Или нет

Arseniy
08.03.2017
02:39:52
ну ты запустил, чо я там понаписал?

Владимир
08.03.2017
02:40:44
Да
Он скипает вообще теги со значениями судя по скл

Arseniy
08.03.2017
02:43:48
а чо он сгенерил-то?

Владимир
08.03.2017
02:43:54
http://pastebin.com/HGpKY2Ed
ну в общем, здесь мы таки что-то с кувери сделать должны

Google

Владимир
08.03.2017
02:44:04
иначе нахрена эта штука вообще

Arseniy
08.03.2017
02:44:50
жыза
починил, ссылка та же
https://gist.github.com/stdray/766441295cec0b7ed7bd5904abba04c8

Владимир
08.03.2017
02:50:46
Ну, без тегов со значениями все работает
а со значениями херня
{SELECT
[Extent1].[Id] AS [Id],
[Extent1].[Md5] AS [Md5],
[Extent1].[Size] AS [Size],
[Extent1].[Path] AS [Path],
[Extent1].[OriginalName] AS [OriginalName],
[Extent1].[CollectionId] AS [CollectionId]
FROM [dbo].[File] AS [Extent1]
WHERE ( NOT EXISTS (SELECT
1 AS [C1]
FROM [dbo].[BindedTags] AS [Extent2]
WHERE ([Extent2].[TagId] IN (42, 47)) AND ([Extent2].[TargetId] = [Extent1].[Id])
)) AND ( EXISTS (SELECT
1 AS [C1]
FROM [dbo].[BindedTags] AS [Extent3]
WHERE ([Extent3].[TagId] IN (175)) AND ([Extent3].[TagId] = @p__linq__0) AND (([Extent3].[Value] = @p__linq__1) OR (([Extent3].[Value] IS NULL) AND (@p__linq__1 IS NULL))) AND ([Extent3].[TargetId] = [Extent1].[Id])
))}

Arseniy
08.03.2017
02:51:52
ммм

Владимир
08.03.2017
02:52:01
Выглядит вроде нормально

Arseniy
08.03.2017
02:52:59
> AND (@p__linq__1 IS NULL
это хуйня
чо у тебя за входные парамеры? ты не передал часом на один тэг одновременно нулл и значение?

Владимир
08.03.2017
02:54:44
не, подожди.
все правильно же.
OR (([Extent3].[Value] IS NULL) AND (@p__linq__1 IS NULL)))
Эта херня стандартная при сравнении, типа либо значения равны, либо они оба нулл.
Видимо нули он сравнить не может.

Oleg
08.03.2017
02:55:00
Кто-нибдуь уже ставил VS2017? И еще такой вопрос: ключ от vs 2015 Enterprise подойдет к enterprise 2017?

Владимир
08.03.2017
02:55:36

Oleg
08.03.2017
02:56:03
печааль

Arseniy
08.03.2017
02:57:45
@e1ee7 ненене, чо-то пошло не так
(([Extent3].[Value] = @p__linq__1) OR (([Extent3].[Value] IS NULL) AND (@p__linq__1 IS NULL))
а бля, пропустил OR
хотя

Admin
ERROR: S client not available

Google

Владимир
08.03.2017
02:59:39

Arseniy
08.03.2017
03:01:00
а какие значения были на входе?

Владимир
08.03.2017
03:01:22
Одновременно не может быть
Такие, какие есть

Arseniy
08.03.2017
03:06:01
понел
не всё собрал через или
закинул

Владимир
08.03.2017
03:13:45
Падаем
Ща посмотрю, где
Но я думаю на кондишенах
The parameter 't' was not bound in the specified LINQ to Entities query expression.
При попытке использования одновременно тега со значением в иклуде с тегом без значения
Если или то, или то, то все работает.
Они конфликтуют друг с другом?

Arseniy
08.03.2017
03:20:45
ну я хз, говорю же, что я 100 лет не использовал деревья выражения сишарпа
ща потестим

Владимир
08.03.2017
03:23:10
Меня выбурает уже, я, наверное, пойду отосплюсь. Линкани меня, чтобы я потом увидел.
Ну и спасибо за помощь до текущего момента.

Google

Arseniy
08.03.2017
03:23:37
у меня не падает
но сонита~

Владимир
08.03.2017
03:26:03
Но я ушел, да.

Arseniy
08.03.2017
03:33:02
сложна. надо играться с ентити)
думаю, что дело в том, что внутри цикла есть замыкание, а вне его нит, но не уверен

Алексей
08.03.2017
04:24:46
Нахера это здесь
Эта группа больше не существует