Dosaic.Plugins.Persistence.EfCore.Abstractions 1.1.5

There is a newer version of this package available.
See the version list below for details.
dotnet add package Dosaic.Plugins.Persistence.EfCore.Abstractions --version 1.1.5
                    
NuGet\Install-Package Dosaic.Plugins.Persistence.EfCore.Abstractions -Version 1.1.5
                    
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="Dosaic.Plugins.Persistence.EfCore.Abstractions" Version="1.1.5" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Dosaic.Plugins.Persistence.EfCore.Abstractions" Version="1.1.5" />
                    
Directory.Packages.props
<PackageReference Include="Dosaic.Plugins.Persistence.EfCore.Abstractions" />
                    
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 Dosaic.Plugins.Persistence.EfCore.Abstractions --version 1.1.5
                    
#r "nuget: Dosaic.Plugins.Persistence.EfCore.Abstractions, 1.1.5"
                    
#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.
#addin nuget:?package=Dosaic.Plugins.Persistence.EfCore.Abstractions&version=1.1.5
                    
Install as a Cake Addin
#tool nuget:?package=Dosaic.Plugins.Persistence.EfCore.Abstractions&version=1.1.5
                    
Install as a Cake Tool

Dosaic.Plugins.Persistence.EfCore.Abstractions

Dosaic.Plugins.Persistence.EfCore.Abstractions is a plugin that allows other Dosaic components to use the entityframework core to interact with certain databases.

Installation

To install the nuget package follow these steps:

dotnet add package Dosaic.Plugins.Persistence.EfCore.Abstractions

or add as package reference to your .csproj

<PackageReference Include="Dosaic.Plugins.Persistence.EfCore.Abstractions" Version="" />

Appsettings.yml

Configure your appsettings.yml with these properties

Postgres for example

samplePostgresDb:
  host: "localhost"
  db: "samplePostgresDb"
  port: "5432"
  password: "postgres"
  user: "postgres"

PluginReadmeTemplateConfig.cs

[Configuration("samplePostgresDb")]
public class NpgsqlDbConfiguration
{
    public string Host { get; set; } = null!;
    public int Port { get; set; }
    public string Database { get; set; } = null!;
    public string User { get; set; } = null!;
    public string Password { get; set; } = null!;
}

Configuration in your plugin host

public class PluginReadme : IPluginEndpointsConfiguration, IPluginServiceConfiguration, IPluginApplicationConfiguration, IPluginControllerConfiguration, IPluginHealthChecksConfiguration
{
    private readonly NpgsqlDbConfiguration _npgsqlDbConfiguration;

    public PluginReadme(NpgsqlDbConfiguration npgsqlDbConfiguration)
    {
        _npgsqlDbConfiguration = npgsqlDbConfiguration;
    }

    public void ConfigureServices(IServiceCollection serviceCollection)
    {
        var connectionString = ConnectionStringBuilder(_npgsqlDbConfiguration);
        serviceCollection.AddEfContext<WebHostSamplePluginDbContext>(options => options.UseNpgsql(connectionString));
    }

    public void ConfigureApplication(IApplicationBuilder applicationBuilder)
    {
        // ensure your database gets initialized setup your EFCore migrations in your project and call
        applicationBuilder.ApplicationServices.GetRequiredService<WebHostSamplePluginDbContext>().Database.Migrate();
        // or call
        applicationBuilder.ApplicationServices.GetRequiredService<WebHostSamplePluginDbContext>().Database.EnsureCreated();
    }

    private static string ConnectionStringBuilder(NpgsqlDbConfiguration configuration)
    {
        return (new NpgsqlConnectionStringBuilder()
        { Host = configuration.Host, Database = configuration.Database, Username = configuration.User, Password = configuration.Password, Port = configuration.Port }).ConnectionString;
    }
}

Usage

internal class SamplePluginDbContext : DbContext, IDbContext<MyPoco>
{
    public SamplePluginDbContext(DbContextOptions<SamplePluginDbContext> options) : base(options) { }

    public DbContext GetContext() => this;

    public DbSet<MyPoco> GetSet() => Set<MyPoco>();

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<MyPoco>(e =>
        {
            e.HasKey(x => x.Id);
            e.Property(x => x.Id).IsRequired();
        });
        base.OnModelCreating(modelBuilder);
    }
}

public interface IExampleService
{
    void DoStuff();
}

public class ExampleService : IExampleService
{
    private readonly IReadRepository<MyPoco> _readRepository;

    public ExampleService(IReadRepository<MyPoco> readRepository)
    {
        _readRepository = readRepository;
    }
    public async Task DoStuff()
    {
        // for example
        var result = await _readRepository.FindByIdAsync();
    }
}
Product Compatible and additional computed target framework versions.
.NET 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 was computed.  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 (1)

Showing the top 1 NuGet packages that depend on Dosaic.Plugins.Persistence.EfCore.Abstractions:

Package Downloads
Dosaic.Plugins.Persistence.EfCore.NpgSql

A plugin-first dotnet framework for rapidly building anything hosted in the web.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.1.9 0 7/8/2025
1.1.8 37 7/7/2025
1.1.7 204 6/13/2025
1.1.6 120 6/5/2025
1.1.5 118 6/4/2025
1.1.4 122 6/4/2025
1.1.3 109 5/23/2025
1.1.2 132 5/8/2025
1.1.1 133 5/6/2025
1.1.0 89 5/2/2025