ISul.Data.Core 2026.10.1.4

The owner has unlisted this package. This could mean that the package is deprecated, has security vulnerabilities or shouldn't be used anymore.
dotnet add package ISul.Data.Core --version 2026.10.1.4
                    
NuGet\Install-Package ISul.Data.Core -Version 2026.10.1.4
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ISul.Data.Core" Version="2026.10.1.4" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ISul.Data.Core" Version="2026.10.1.4" />
                    
Directory.Packages.props
<PackageReference Include="ISul.Data.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ISul.Data.Core --version 2026.10.1.4
                    
#r "nuget: ISul.Data.Core, 2026.10.1.4"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ISul.Data.Core@2026.10.1.4
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ISul.Data.Core&version=2026.10.1.4
                    
Install as a Cake Addin
#tool nuget:?package=ISul.Data.Core&version=2026.10.1.4
                    
Install as a Cake Tool

ISul Data Package

Ordenação de consultas

Os métodos OrderBy continuam aceitando campos, caminhos aninhados e direção por campo:

var query = db.Conteudo.OrderBy("Ordem, Titulo", orderBy);
var events = db.EmpresaEvento.OrderBy("Evento.Edicao desc, Ordem asc");

Use os nomes reais das propriedades, sem distinção entre maiúsculas e minúsculas. Direções diferentes de asc e desc, assim como campos vazios entre vírgulas, são rejeitadas.

Movimentação de registros

Para entidades que implementam ISortable<TId>, ChangeOrderAsync move a origem para a ordem do destino e desloca os registros intermediários em uma unidade:

int affected = await db.EmpresaEvento.ChangeOrderAsync(
    originId,
    targetId,
    scope: x => x.CategoriaId == categoriaId,
    cancellationToken: cancellationToken);

Ao mover de 2 para 5, as posições 3, 4 e 5 são decrementadas. Ao mover de 5 para 2, as posições 2, 3 e 4 são incrementadas. O filtro scope limita tanto a busca da origem e do destino quanto a atualização. Inclua nele todas as dimensões do agrupamento (por exemplo, evento e categoria). Sem filtro, o escopo é todo o conjunto visível.

  • Requer EF Core com provedor relacional e suporte a ExecuteUpdateAsync.
  • O intervalo afetado deve ter ordens distintas e consecutivas; inconsistências lançam InvalidOperationException antes da atualização. Não renumera a lista inteira.
  • Origem ou destino ausente no escopo lança KeyNotFoundException.
  • Origem e destino iguais retornam zero, desde que o registro exista no escopo.
  • Persiste diretamente no banco em uma única atualização. Não requer SaveChangesAsync e não salva outras alterações pendentes. Entidades rastreadas não são sincronizadas; recarregue-as antes de reutilizar sua ordem.
  • Cria uma transação com isolamento Serializable, usando a estratégia de execução do contexto. Se já existe uma transação, participa dela sem confirmar ou revertê-la; o chamador deve garantir isolamento adequado e tratar conflitos de concorrência.
  • Uma restrição única de ordem verificada imediatamente pelo banco pode impedir o deslocamento por colisões intermediárias. O método não contorna essa restrição; quando aplicável, use uma restrição diferível suportada pelo provedor.
  • MoveUpAsync, MoveDownAsync e MoveUpOrDownAsync mantêm o comportamento anterior: trocam a ordem de duas entidades e dependem do salvamento pelo chamador.

Slugs

Para entidades que implementam ISlugable<TId>, a geração usa ISul.Util.TextUtil e resolve colisões com sufixos numéricos (pagina, pagina-2, pagina-3):

// Edição ou inclusão com ID já atribuído: ignora o próprio registro.
item.Slug = await db.Conteudo.GenerateUniqueSlugAsync(
    request.Titulo, item.Id, cancellationToken);

// Unicidade dentro de um site.
item.Slug = await db.Conteudo
    .Where(x => x.SiteId == item.SiteId)
    .GenerateUniqueSlugAsync(request.Titulo, item.Id, cancellationToken);

// Inclusão sem ID atribuído: não exclui nenhum registro da verificação.
item.Slug = await db.Conteudo.GenerateUniqueSlugAsync<Conteudo, Guid>(
    request.Titulo, cancellationToken);

A função retorna a string sem modificar ou salvar entidades. Remove hífens das extremidades da base e rejeita textos que produzam slug vazio. Os filtros da consulta são respeitados. CreateAndCheckSlug(value, id) continua disponível e usa o novo algoritmo.

A verificação consulta apenas registros persistidos, não reserva o slug e não considera inclusões pendentes no contexto. Configure um índice único no banco com o mesmo escopo para garantir unicidade em gravações concorrentes; o chamador trata uma eventual colisão na gravação. Se registros ocultados por filtros globais também reservam slugs, inclua-os na consulta de disponibilidade. Considere o tamanho máximo da coluna ao fornecer o texto.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
Loading failed