Изменения документа Serialize.Linq

Редактировал(а) Alexandr Fokin 2023/02/08 14:08

От версии 1.2
отредактировано Alexandr Fokin
на 2020/12/20 19:15
Изменить комментарий: Добавлен комментарий
К версии 1.19
отредактировано Alexandr Fokin
на 2022/09/26 14:19
Изменить комментарий: Update document after refactoring.

Сводка

Подробности

Свойства страницы
Родительский документ
... ... @@ -1,1 +1,1 @@
1 -Разработка.NET.Библиотеки.WebHome
1 +Разработка.NET.Библиотеки.Документы.Форматы данных.WebHome
XWiki.XWikiComments[0]
Комментарий
... ... @@ -1,5 +1,28 @@
1 -Тестовый проект1.
1 +Тестовый проект 1.
2 2  
3 -Удалось создать собственный класс-сущность, содержащий несколько выражений (select, where).
4 -Передать сериализованный экземпляр класса на сервер.
5 -На сервере получить выражения и применить их к набору IEnumerable.
3 +Приложения:
4 +ASP.NET web api
5 +консольный клиент
6 +
7 +Клиент посылает на сервер LINQ expression tree в формате JSON.
8 +Сервер получает запрос, десериализует и выполняет. (обращение к List, обращение к EF iqueryable)
9 +Сервер возвращает результирующий набор данных.
10 +
11 +Заметка:
12 + expression tree может быть как частичным (например select(Func<DbEntity, DbEntity>), where(Func<DbEntity, bool>),
13 + так и полностью формировать выборку (Func<IEnumerable<DbEntity>, IEnumerable<DbEntity>>)
14 + (причем в данном случае клиент сам может определить момент материализации запроса)
15 +
16 +
17 +Опционально:
18 +- Предполагается, что делаем выборки только на чтение - сразу отключаем changeTracking
19 +- Параметр запроса, отвечающий за LazyLoading
20 +- Параметр, отвечающий за загрузку связанных данных (или флаг, или отдельные выражения для Include)
21 +- Насколько понимаю: классы, задействованные в linq выражении, должны иметь идентичные название и namespace в клиентском и серверном приложении.
22 + (Иначе возможно придется на сервере делать автозамену полного имени класса)
23 +- Рассмотреть. Поддержка Async при получение результата sql запроса.
24 +- Рассмотреть. Использование многопоточности при обработки результата. (Возможно отдельным параметром)
25 +
26 +
27 +Из минусов:
28 +вся ответственность по формированию выражения (и соответственно sql запроса) ложиться на клиента, сложнее сделать валидацию.
Дата
... ... @@ -1,1 +1,1 @@
1 -2020-12-20 19:15:55.209
1 +2020-12-20 19:15:55.210