Dosaic.Plugins.Persistence.EntityFramework
1.0.25
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package Dosaic.Plugins.Persistence.EntityFramework --version 1.0.25
NuGet\Install-Package Dosaic.Plugins.Persistence.EntityFramework -Version 1.0.25
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.EntityFramework" Version="1.0.25" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Dosaic.Plugins.Persistence.EntityFramework --version 1.0.25
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Dosaic.Plugins.Persistence.EntityFramework, 1.0.25"
#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.
// Install Dosaic.Plugins.Persistence.EntityFramework as a Cake Addin #addin nuget:?package=Dosaic.Plugins.Persistence.EntityFramework&version=1.0.25 // Install Dosaic.Plugins.Persistence.EntityFramework as a Cake Tool #tool nuget:?package=Dosaic.Plugins.Persistence.EntityFramework&version=1.0.25
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Dosaic.Plugins.Persistence.EntityFramework
Dosaic.Plugins.Persistence.EntityFramework 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.EntityFramework
or add as package reference to your .csproj
<PackageReference Include="Dosaic.Plugins.Persistence.EntityFramework" 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 | Versions 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net9.0
- Dosaic.Hosting.Abstractions (>= 1.0.25)
- Dosaic.Plugins.Persistence.Abstractions (>= 1.0.25)
- OpenTelemetry.Extensions.Hosting (>= 1.11.1)
- OpenTelemetry.Instrumentation.EntityFrameworkCore (>= 1.0.0-beta.10)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.