Jarvis.EntityFrameworkCore
3.0.1.2
dotnet add package Jarvis.EntityFrameworkCore --version 3.0.1.2
NuGet\Install-Package Jarvis.EntityFrameworkCore -Version 3.0.1.2
<PackageReference Include="Jarvis.EntityFrameworkCore" Version="3.0.1.2" />
<PackageVersion Include="Jarvis.EntityFrameworkCore" Version="3.0.1.2" />
<PackageReference Include="Jarvis.EntityFrameworkCore" />
paket add Jarvis.EntityFrameworkCore --version 3.0.1.2
#r "nuget: Jarvis.EntityFrameworkCore, 3.0.1.2"
#:package Jarvis.EntityFrameworkCore@3.0.1.2
#addin nuget:?package=Jarvis.EntityFrameworkCore&version=3.0.1.2
#tool nuget:?package=Jarvis.EntityFrameworkCore&version=3.0.1.2
Jarvis.EntityFrameworkCore
Biblioteca de extensões para Entity Framework Core com tratamento de erros automático, operações CRUD simplificadas e suporte a exclusão lógica (soft delete).
Instalação
dotnet add package Jarvis.EntityFrameworkCore
DbUpdateResponse
Todas as operações de escrita retornam um DbUpdateResponse com o status da operação.
var response = context.AddAndSave(produto);
if (response.IsSuccess)
{
// sucesso
}
if (response.IsError)
{
// response.Exception contém a exceção
}
Consultas (DbContext e DbSet)
Todos os métodos de consulta possuem tratamento de exceção automático, retornando null em caso de erro.
Find
// Por DbContext
var produto = context.Find<Produto>(id);
var produto = await context.FindAsync<Produto>(id);
// Por DbSet
var produto = context.Produtos.Find(id);
var produto = await context.Produtos.FindAsync(id);
FirstOrDefault
var produto = context.FirstOrDefault<Produto>();
var produto = context.FirstOrDefault<Produto>(x => x.Ativo);
var produto = await context.FirstOrDefaultAsync<Produto>(x => x.Nome == "Teste");
All (IQueryable)
var produtos = context.All<Produto>();
var ativos = context.All<Produto>(x => x.Ativo);
AllAsEnumerable
var produtos = context.AllAsEnumerable<Produto>();
var ativos = context.AllAsEnumerable<Produto>(x => x.Ativo);
AllAsAsyncEnumerable
var produtos = context.AllAsAsyncEnumerable<Produto>();
var ativos = context.AllAsAsyncEnumerable<Produto>(x => x.Ativo);
Find em IQueryable
Busca por chave primária em qualquer IQueryable<T>. Detecta a chave via [Key] ou propriedade Id.
var produto = await context.All<Produto>(x => x.Ativo).Find(id);
Inserção
Cada método possui três variantes: sem save, com save síncrono (AndSave) e com save assíncrono (AndSaveAsync).
// Adicionar sem salvar
context.Add(produto);
// Adicionar e salvar
context.AddAndSave(produto);
var response = await context.AddAndSaveAsync(produto);
// Adicionar vários
context.AddRange(listaProdutos);
context.AddRangeAndSave(listaProdutos);
await context.AddRangeAndSaveAsync(listaProdutos);
Atualização
A entidade deve estar rastreada (tracked) pelo contexto. O update salva as alterações detectadas pelo change tracker.
produto.Nome = "Novo Nome";
context.UpdateAndSave(produto);
var response = await context.UpdateAndSaveAsync(produto);
// Atualizar vários
context.UpdateRangeAndSave(listaProdutos);
await context.UpdateRangeAndSaveAsync(listaProdutos);
Remoção
Remoção física
context.RemoveAndSave(produto);
var response = await context.RemoveAndSaveAsync(produto);
Exclusão lógica (Soft Delete)
Define a propriedade Ativo como false (por padrão) ou uma propriedade customizada.
// Usando a propriedade "Ativo" (padrão)
context.LogicalRemoveAndSave(produto);
await context.LogicalRemoveAndSaveAsync(produto);
// Usando uma propriedade customizada
context.LogicalRemoveAndSave(produto, x => x.Habilitado);
await context.LogicalRemoveAndSaveAsync(produto, x => x.Habilitado);
Limpar tabela
Remove todos os registros de uma tabela.
context.ClearAndSave<Produto>();
await context.ClearAndSaveAsync<Produto>();
Save
var response = context.Save();
var response = await context.SaveAsync();
Metadados
// Nome da tabela no banco
var tableName = context.GetTableName<Produto>();
// Nome da coluna no banco
var columnName = context.GetColumnName<Produto>(x => x.Nome);
Change Tracking (EntityEntry)
Extensões para trabalhar com o change tracker do EF Core.
// Obter entradas modificadas
var modified = context.GetModifiedEntries();
// Obter/definir valores de propriedades
foreach (var entry in modified)
{
var nome = entry.GetPropertyValue("Nome");
entry.SetPropertyValue("DataAlteracao", DateTime.Now);
var prop = entry.GetProperty("Nome");
// prop.CurrentValue, prop.OriginalValue, prop.IsModified
}
DbSet vs DbContext
Todos os métodos estão disponíveis tanto como extensão de DbContext quanto de DbSet<T>:
// Via DbContext
context.Find<Produto>(id);
context.AddAndSave(produto);
// Via DbSet
context.Produtos.Find(id);
context.Produtos.AddAndSave(produto);
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 is compatible. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. 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 is compatible. 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. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- Microsoft.EntityFrameworkCore.Proxies (>= 5.0.17)
- Microsoft.EntityFrameworkCore.Relational (>= 5.0.17)
-
net10.0
- Microsoft.EntityFrameworkCore.Proxies (>= 10.0.2)
- Microsoft.EntityFrameworkCore.Relational (>= 10.0.2)
-
net5.0
- Microsoft.EntityFrameworkCore.Proxies (>= 5.0.17)
- Microsoft.EntityFrameworkCore.Relational (>= 5.0.17)
-
net6.0
- Microsoft.EntityFrameworkCore.Proxies (>= 6.0.36)
- Microsoft.EntityFrameworkCore.Relational (>= 6.0.36)
-
net7.0
- Microsoft.EntityFrameworkCore.Proxies (>= 7.0.20)
- Microsoft.EntityFrameworkCore.Relational (>= 7.0.20)
-
net8.0
- Microsoft.EntityFrameworkCore.Proxies (>= 8.0.23)
- Microsoft.EntityFrameworkCore.Relational (>= 8.0.23)
-
net9.0
- Microsoft.EntityFrameworkCore.Proxies (>= 9.0.12)
- Microsoft.EntityFrameworkCore.Relational (>= 9.0.12)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Jarvis.EntityFrameworkCore:
| Package | Downloads |
|---|---|
|
Jarvis.DAO
Biblioteca DAO para EntityFrameworkCore. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.0.1.2 | 45 | 2/1/2026 |
| 3.0.1.1 | 106 | 1/23/2026 |
| 3.0.1 | 327 | 11/13/2025 |
| 3.0.0.9 | 372 | 4/18/2025 |
| 3.0.0.8 | 228 | 2/13/2025 |
| 3.0.0.7 | 236 | 11/13/2024 |
| 3.0.0.6 | 225 | 9/25/2024 |
| 3.0.0.5 | 322 | 8/13/2024 |
| 3.0.0.4 | 199 | 8/2/2024 |
| 3.0.0.3 | 217 | 6/11/2024 |
| 3.0.0.2 | 243 | 4/29/2024 |
| 3.0.0.1 | 248 | 3/24/2024 |
| 3.0.0 | 246 | 3/23/2024 |
| 2.0.1 | 263 | 3/15/2024 |
| 2.0.0.9 | 227 | 2/18/2024 |
| 2.0.0.8 | 1,692 | 12/31/2023 |
| 2.0.0.7 | 240 | 12/30/2023 |
| 2.0.0.6 | 252 | 11/16/2023 |
| 2.0.0.4 | 508 | 11/9/2022 |
| 2.0.0.3 | 599 | 7/28/2022 |
| 2.0.0.2 | 585 | 6/2/2022 |
| 2.0.0.1 | 614 | 5/23/2022 |
| 2.0.0 | 512 | 11/10/2021 |
| 1.0.0.3 | 683 | 5/16/2021 |
| 1.0.0.2 | 520 | 5/11/2021 |
| 1.0.0.1 | 520 | 4/30/2021 |
| 1.0.0 | 524 | 4/20/2021 |