Новые возможности
Критические изменения
Исправление ошибок
RequestUrl
при конфигурации клиента Client
#I40BC6
В этой версии есть несколько разрушительных изменений, поэтому при обновлении внимательно проверьте изменения.
Новые возможности
[Добавлено] Настройка изменяемых кодов ответа с помощью app.UseUnifyResultStatusCodes()
#I3VZQH
[Добавлено] Добавление по умолчанию заголовка User-Agent
для удалённых запросов #I3W17C
[Добавлено] Поддержка расширенной прокси SQL для переключения контекста баз данных #I3XFP6 #I3XDCR
[Добавлено] Автоматическое распознавание формата Cron для задач планировщика #I3Y7GT
[Добавлено] Возможность перехвата операций расширенной прокси SQL #I3YHG4
[Добавлено] Перехват всех исключений для удалённых запросов #I3YPDE
[Добавлено] Настройка времени ожидания (timeout
) для удалённых запросов #I3YPPK
[Добавлено] Поддержка DataTable и DataSet без указания строгого типа возврата #I3Z6RI
Разрушительные изменения
[NonAutomatic]
в [Manual]
#I3XKKX
[NotChangedListener]
в [SuppressChangedListener]
#I3XKLZ
[ManualSaveChanges]
в [ManualCommit]
#I3XKNP
DbContext.TenantIdQueryFilterExpression
в DbContext.BuildTenantQueryFilter
#I3XKTB
[SkipScan]
в [SuppressSniffer]
#I3XN5N
[SkipProxy]
в [SuppressProxy]
#I3XN7O
Исправления ошибок
TablePrefix
в AppDbContext
: #I3Y57Q
.ToPagedList()
#I3XNAN
Другие изменения
Изменения в документации
Ответы на вопросы
[Ответ] Как наследовать несколько источников данных с помощью dapper? #I3WUOI
[Ответ] Вопросы о многократном выполнении SpareTime #I3XEQU
[Ответ] Как уведомить опцию о необходимости изменения при изменении данных в базе данных? #I3XYI8
[Ответ] Проблема получения Id арендатора при добавлении нового арендатора SaaS #I3Y5CF
[Ответ] Получение _httpContextAccessor.HttpContext
равняется null #I3Y6BI
[Ответ] Проблема чтения значений App.Configuration
в Ubuntu #I3Y74H
[Ответ] Вопросы о области действия контекста базы данных #I3YHXP
[Ответ] Проблема успешного выполнения транзакций Unit of Work, но наличие системных ошибок #I3YIWU
[Ответ] Настройка случайного выбора вторичного сервера для чтения и записи #I3YVR7- Не реализовано
[Устарело] Добавление панели управления Dashboard для SpareTime, позволяющей приостанавливать, удалять и просматривать задачи #I3XELY
В этом выпуске внесены несколько существенных изменений, поэтому при обновлении внимательно проверьте изменения.
Новые возможности
app.UseUnifyResultStatusCodes()
— конфигурирование модификации возвращаемых кодов состояния #I3VZQH
User-Agent
для удалённых запросов #I3W17C
Sql
с возможностью переключения контекста баз данных через прокси-локатор #I3XFP6 #I3XDCR
Существенные изменения
FakeDelete
(ложное удаление / мягкое удаление) #I3XKII
[NonAutomatic]
в [Manual]
#I3XKKX
[NotChangedListener]
в [SuppressChangedListener]
#I3XKLZ
[ManualSaveChanges]
в [ManualCommit]
#I3XKNP
DbContext.TenantIdQueryFilterExpression
в DbContext.BuildTenantQueryFilter
#I3XKTB
Исправления ошибок
Другие изменения
Furion
в среде работы вне веб-сервераИзменения в документации
Ответы на вопросы
Dapper
#I3WUOI
[Ответ] Проблемы многократного выполнения задач SpareTime
#I3XEQU
Не реализовано
Dashboard
для задач SpareTime
, позволяющей приостанавливать, удалять и просматривать задачи #I3XELY
Новые возможности
Furion.Pure
, которая не зависит от EntityFramework.Core
#I3VGW8
[FromRoute]
, которые могут быть не обязательными #I3VFIM
Разрушение статус-кво
.snupkg
для всех пакетов Furion, что позволяет прямо отладить исходный код всех пакетов Furion во время разработки #I3VFIX
repository.BuildChange()
, теперь дополнительно возвращает объект IServiceScope
#I3VX3D
days
на minutes
в методе обновления Token
JWT #I3VXNB
Устранение ошибок
App.GetOptionsSnapshot<>()
#I3VS2X
[Исправлено] Устранение проблемы возникновения исключения при возврате null
значения типа Stream
при удалённых запросах #I3VSTU
Другие изменения
Изменения в документации
App
, документации для удалённых запросов и документации для разделения таблиц и баз данныхОтветы на вопросы
Не реализовано
Новые возможности
Db.GetMSRepository()
для получения статического репозитория для основной и репликационной баз данных #I3UBSJ
[SensitiveDetection]
#I3THIA
SpecificationDocumentBuilder.DocumentGroups
и SpecificationDocumentBuilder.CheckApiDescriptionInCurrentGroup(currentGroup, apiDescription)
#I3UDSY
Разработки
Устранение ошибок
[DataValidation]
и [SensitiveDetection]
в многоязыковых приложениях #I3UH6U
Scoped
#I3SJF6
ToPagedList
в Mysql #I3SJQ3
tool/cli.psl
#I3S1T6
Другие изменения
UpdateIncludeNowAsync
имеет двусмысленность #I3RW9QИзменения в документации
Ответы на вопросы
MasterDbContextLocator
не создаётся с учётом пользовательских параметров #I3SDBB
&"tools/cli.ps1"
для страницированной загрузки структуры таблицы в MySQL #I3T4F8
easy connection
доступ из одного LAN адреса работает, но удалённые запросы нет #I3TA2U
scope.ServiceProvider.GetService<IOtherService>
не существует #I3TQMV
L.GetSelectCulture()
#I3TQS4
IDGen.NextID()
не являются последовательными #I3UAF6
Не реализовано
Новые возможности
Критические изменения
Устранение ошибок
Другие изменения
UpdateIncludeNowAsync
, которое было двусмысленным #I3RW9Q
Изменения в документации
Ответы на вопросы
MasterDbContextLocator
не создаётся с учётом переданных параметров #I3SDBB
Не реализовано
Новые возможности
IMSRepository
и IMSRepository<TMasterDbContextLocator>
, позволяющие случайным образом или по своему выбору получать резервную базу данных #I3R5ZF
Разрушительные изменения
Исправление ошибок
Headers
не может быть добавлен к подинтерфейсу IHttpDispatchProxy
#I3RAF7
Другие изменения
Изменения в документации
[Добавлено] Документация по файловой системе, статическому классу FS
#I3RCC4
[Обновлено] Документация по чтению и записи с разделением нагрузки/основной и резервной базы данных, хранилищу базы данных, статическому классу Db
#I3R3B6
Ответы на вопросы
Не реализовано
Guid
имеет фиксированную точность в миллисекундах: несколько Guid
могут быть сгенерированы в течение одной миллисекунды и будут непредсказуемыми #I3R59J
Новые возможности
Разрушительные изменения
IJsonSerializerProvider.GetSerializerOptions()
#I3QIJN
Исправления ошибок
services.AddInject()
#I3Q7XH
[Исправлено] Возврат null
при работе с семенами данных #I3QCM5
[Исправлено] Проблема с преобразованием свойств в нижний регистр после создания объекта Clay через Clay.Object
#I3QRV3
Другие изменения
Furion
фреймворка, снижение потребления памяти и увеличение скорости инициализации приложения 92f8cc1
Изменения в документации
Ответы на вопросы
InsertOrUpdateNowAsync
#I3QKO5
Не реализованное
Failed
для задач планировщика #I3QCM2
Новые возможности
Furion.Extras.DatabaseAccessor.MongoDB
#I3PKST
object
или dynamic
#I3OY27
Oops.Retry
, поддерживающий повторные попытки при ошибочном вызове метода #I3PJKQ
JWTSettings
для алгоритма шифрования #I3PQGV
Разрушительные изменения
Исправление проблем
Другие изменения
Изменения в документации
JWTSettings
#I3PQGW
Ответы на вопросы
Не реализовано
Новые возможности
Clay
, который позволяет создавать слаботипизированные объекты с помощью C# и работать со слаботипизированными данными #I3O2QQ
Scoped.Create
с возвращаемым значением #I3O47J
Scoped.Create()
#I3OAP5
[DataValidation]
, который пропускает проверку пустых строк и нулевых значений #I3OGEN
Разработки
Исправление ошибок
cancelInNoneNextTime: false
#I3O3N0
MiniProfiler
как false
#I3OAWX
[Consumes("application/x-www-form-urlencoded")]
и ModelQuery
#I3ODUR
Другие изменения
Изменения в документации
Ответы на вопросы
Scope.CreateUnitOfWork
в задачах планировщика #I3O2CD
rep.FirstOrDefault(u => u.Id == UserId)
в PostgreSQL #I3O5OF
Не реализовано
Новые возможности
ISpareTimeWorker
с использованием конфигурационного пути [SpareTime("{конфигурационный_путь}")
#I3NTUX
ClayObject
, работающий с типами ExpandoObject
и IDictionary<string, object>
#I3N3J4
Scoped.CreateUnitOfWork(handler)
, создающий область действия и автоматически отправляющий изменения в базе данных #I3NU3G
Разрушительные изменения
Исправление ошибок
Другие изменения
Изменение документации
[Добавлено] Документация по модульной разработке #I3NSUS
[Обновлено] Ошибочный метод ToAESDecrypt
был записан как ToToAESDecrypt
#I3NNKV
Ответы на вопросы
Не выполненные задачи
IEnumerableExtensions
для метода OrderBy
для поддержки сортировки по страницам #I3NOQ9
Новые возможности
Разработки
Исправление ошибок
[Исправлено] Исключение при возврате примитивного типа из SQL агента #I3IC84
[Исправлено] Название выходного значения в хранимых процедурах не совпадает с определенным #I3IC7Y
[Исправлено] Ошибка регулярного выражения для проверки номера телефона #I3ID10
[Исправлено] Проблема с отсутствием захвата внутренних исключений через AOP #I3IGCC
[Исправлено] Выполнение глобального фильтра исключений после отметки обработки исключения #I3J463
[Исправлено] Недействие пользовательского глобального фильтра исключений #I3K1SJ
Другие изменения
Обновление документации
Ответы на вопросы
Не реализовано
Новые возможности
Разрушительные изменения
Исправленные ошибки
Другие изменения
Изменения в документации
Ответы на вопросы
Не реализовано
Новые возможности
MySql.EntityFrameworkCore
#I3E6J1
WebApi
с использованием атрибута [FromQuery]
#I3EFYJ
services.AddRisterTypes(types)
#I3EIV3
Первичные изменения
Исправление ошибок
@
для всех параметров команд SQL #I3EBJP
SignoutToSwagger
в расширении HttpContextExtensions
#I3EHNQ
[ApiController]
к динамическим WebAPI #I3EOQQ
Другие изменения
Context
в расширенном хранилище SqlSugar изменён на SqlSugarClient
#I3EHXA
Изменения в документации
Ответы на вопросы
[Ответ] Проблема сгенерировать модели при использовании tools v1.16.0 #I3ENZ8
[Ответ] Проблема очистки токена при выходе из системы кнопкой Logout #I3EOF9
Не реализовано
Новые возможности
multipart/form-data
в удалённых запросах #I3D7KG
string.Format
в сообщении ошибки атрибута [DataValidation]
#I3E08W
AppendQueries()
для объекта HttpRequestMessage
, позволяющее добавлять дополнительные параметры запроса #I3E3DI
Разработки
IRepository.AsAsyncEnumerable()
#I3DIQ1 изменено на: rep.AsQueryable().ToListAsync()
Устранение проблем
[Исправлено] Недействие конфигурации contentType
равной application/x-www-form-urlencoded
в удалённых запросах #I3CWBS
[Исправлено] Отсутствие полного отображения адреса запроса при использовании HttpClient
#I3CY42
[Исправлено] Ошибочное использование алгоритма исключения файла конфигурации по умолчанию, должно быть использована регулярное выражение #I3D9E7
[Исправлено] Отсутствие действия при успешном выполнении запроса в системе мониторинга #I3DOE4
[Исправлено] Проблема с отсутствием файла Oracle.ManagedDataAccess.Core
при использовании расширения Dapper
для работы с Oracle #I3DYM3
Другие изменения
Изменения в документации
Ответы на вопросы
LinqExpression.And
#I3CXKZ
IEntityNotKey
для сущностей без ключа #I3DWRF
DynamicApiController
во время выполнения #I3D5UL
NotMapped
в методе ConvertToDbParameters
класса DbHelpers
#I3E2XS
Не реализовано
ISoftDelete
#I3CP93
Новые возможности
IDGenerator
) с использованием алгоритма Snowflake, благодаря автору idgenerator за вклад PR #PR204 #I3B60S
DbContext
#I39N5UРазработки
JsonSerializerUtility
и связанных настроек #I3AFRJ
Исправления ошибок
EFCoreRepository.IsAttached()
#I3A824
cli.ps1
с новой версией EFCore
#I3APO9
[Table]
для конфигурации таблицы в EFCore
#I3BAYH
CheckIsSplitCamelCase
для динамических WebAPI #I3BLKX
Async
игнорируется #I3C3DA
Другие изменения
Изменения в документации
Ответы на вопросы
Furion.Extras.DatabaseAccessor.SqlSugar
#I39PDC
AppSettings
? #I3A4SB
Не реализовано - [Заброшено] Предложение по настройке внешних ключей в EFCore #I3994X
Новые возможности
OldEntity
в интерфейсе IEntityChangedListener
#I385X2
IMapper
через расширение Mapster
#I38C7C
[AppDbContext]
#I38J97
UnifyContext.GetExceptionMetadata(context)
#I38ONX
Первичные изменения
Исправление проблем
Db.GetNewDbContext()
все еще возвращается один и тот же объект #I38NNP
object
в Swagger
#I38FHL
IEntityChangedListener
для одного типа #I38UQJ
Другие изменения
Изменения в документации
FluentValidation
#I38IOT
Ответы на вопросы
Furion
#I38WMZ
Не реализовано
Новые возможности
[NonUnify]
в классах #I359Q6
services.AddMvcFilter<>()
#I368BH
Разрушительные изменения
Исправления ошибок
Другие изменения
Изменения в документации
Ответы на вопросы
Не реализовано
Новые возможности
Разрушительные изменения
Устранение ошибок - [Исправлено] Исправление проблемы несоответствия нормализации Swagger #I2ACF3
string.SqlQueryizeAsync<T1>()
#I2BSTS
AsQueryable()
в SqlSugar #I2DH1D
Другие изменения
Изменения в документации
Ответы на вопросы - [Ответ] Проблема с настройками CORS #I2ASNJ
Не реализованные возможности
Новые возможности
Furion.Extras.ObjectMapper.Mapster
#I29LSJ
Furion.Extras.Logging.Serilog
#I2AAN8
Furion.Extras.Web.HttpContext
#I29LSM
OnModelCreating
в режиме реального времени #I28UDT
sql.Change("полное имя типа локатора")
#I29LAB
UpdateInclude
и UpdateExclude
#I29VUG
MiniProfiler
#I297R9
Разрушительные изменения
AppAuthorizeHandler
#I29MD9
HttpContextUtilities
в HttpContextLocal
#I29KQE
UnifyResultContext
в UnifyContext
#I29LLZ
Successed
в Succeeded
в нормализованном результате #I29NMV
Mapster
объекта, заменено расширяющим способом #I29D2M
CacheManager
#I29LU1
SaveChanges
#I292LO
Исправление ошибок
BadObjectResult
или ValidationProblemDetails
, приводящая к отключению нормализованного результата #I29ZU9
KeepName
, KeepVerb
, SplitCamelCase
в динамическом WebAPI #I29X90
tuple
через SQL-агент #I29SMV
HttpContext
#I29LU4
Другие изменения
Изменения в документации
Ответы на вопросы
[Вопрос-ответ] Как реализовать доступ с авторизацией в Swagger #I294F2
[Вопрос-ответ] Как настроить несколько баз данных для многоконтекстных сущностей #I29G6S
[Вопрос-ответ] Поддерживает ли динамический WebAPI загрузку файлов #I29R5E
[Вопрос] Невозможность создания миграционного кода для нескольких контекстов базы данных #I2A6II- Не реализованные возможности
[Устарело] Реализация передачи имени таблицы в BuildChange #I292SN
[Устарело] Отказ от поддержки игнорирования регистра при присвоении свойств для результатов выполнения базы данных #I29DRQ
[Устарело] Отказ от использования механизма Webhook #I2A3I0