DRN.Framework.EntityFramework
0.5.0-preview001
Prefix Reserved
See the version list below for details.
dotnet add package DRN.Framework.EntityFramework --version 0.5.0-preview001
NuGet\Install-Package DRN.Framework.EntityFramework -Version 0.5.0-preview001
<PackageReference Include="DRN.Framework.EntityFramework" Version="0.5.0-preview001" />
paket add DRN.Framework.EntityFramework --version 0.5.0-preview001
#r "nuget: DRN.Framework.EntityFramework, 0.5.0-preview001"
// Install DRN.Framework.EntityFramework as a Cake Addin #addin nuget:?package=DRN.Framework.EntityFramework&version=0.5.0-preview001&prerelease // Install DRN.Framework.EntityFramework as a Cake Tool #tool nuget:?package=DRN.Framework.EntityFramework&version=0.5.0-preview001&prerelease
DRN.Framework.EntityFramework provides DrnContext with conventions to develop rapid and effective domain models.
DRNContext
DrnContext has following unique features:
- Implements
IDesignTimeDbContextFactory
to enable migrations from dbContext defining projects. - Implements
IDesignTimeServices
to support multi context projects with default output directories in the context specific folder. - Uses
HasDrnContextServiceCollectionModule
attribute for automatic registration with AddServicesWithAttributes service collection extension method. - Uses context name (typeof(TContext).Name) as connection string key by convention.
- Automatically applies
IEntityTypeConfiguration
implementations from the assembly whose namespace contains the derived context's namespace. - Automatically marks Entities derived from
DRN.Framework.SharedKernel.Domain.Entity
as created, modified or deleted. - Enables
DRN.Framework.Testing
to create easy and effective integration tests with conventions and automatic registrations.- Application modules can be registered without any modification to
TestContext
TestContext
'sContainerContext
- creates a
postgresql container
then scans TestContext's service collection for inherited DrnContexts. - Adds a connection strings to TestContext's configuration for each
DrnContext
according to convention.
- creates a
TestContext
acts as a ServiceProvider and when a service is requested it can build it from service collection with all dependencies.
- Application modules can be registered without any modification to
namespace DRN.Framework.EntityFramework.Context;
[HasDrnContextServiceCollectionModule]
public abstract class DrnContext<TContext> : DbContext, IDesignTimeDbContextFactory<TContext>, IDesignTimeServices where TContext : DbContext, new()
{
...
public class HasDrnContextServiceCollectionModuleAttribute : HasServiceCollectionModuleAttribute
{
static HasDrnContextServiceCollectionModuleAttribute()
{
ModuleMethodInfo = typeof(ServiceCollectionExtensions).GetMethod(nameof(ServiceCollectionExtensions.AddDbContextsWithConventions))!;
}
}
Example Usage
namespace Sample.Infra;
public static class InfraModule
{
public static IServiceCollection AddSampleInfraServices(this IServiceCollection sc)
{
sc.AddServicesWithAttributes();
return sc;
}
}
public class QAContext : DrnContext<QAContext>
{
public QAContext(DbContextOptions<QAContext> options) : base(options)
{
}
public QAContext() : base(null)
{
}
public DbSet<User> Users { get; set; }
public DbSet<Question> Questions { get; set; }
public DbSet<Answer> Answers { get; set; }
public DbSet<QuestionComment> Comments { get; set; }
public DbSet<Category> Categories { get; set; }
public DbSet<Tag> Tags { get; set; }
}
Development Environment Configurations
Following configuration options added to minimize development environment creation efforts:
- DrnContext development connection string will be auto generated when
Environment
configuration key set as Development and,postgres-password
configuration key set and,- No other connection string is provided for the DbContexts.
- Following keys can set optionally according to DbContextConventions;
DrnContext_AutoMigrateDevEnvironment
- When set true applies migrations automatically
DrnContext_DevHost
- default is postgresql
DrnContext_DevPort
- default is 5432
DrnContext_DevUsername
- default is postgres
DrnContext_DevDatabase
- default is drnDb
postgres-password
and DrnContext_AutoMigrateDevEnvironment
should be enough to start a hosted service that has DrnContext dependencies.
For instance:
- When a Postgresql helm chart is used for dev environment and it creates a password secret automatically,
- Then only defining a volume mount should be enough for database configuration.
Global Usings
global using DRN.Framework.EntityFramework.Context;
global using Microsoft.EntityFrameworkCore;
global using DRN.Framework.Utils.DependencyInjection;
Semper Progredi: Always Progressive
Commit Info
Author: Duran Serkan KILIÇ
Date: 2024-06-04 23:19:15 +0300
Hash: 7bd9c837191ed48d352f865d5742bed9e6a1995f
Product | Versions 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. |
-
net8.0
- DRN.Framework.Utils (>= 0.5.0-preview001)
- EFCore.NamingConventions (>= 8.0.3)
- Microsoft.AspNetCore.Identity.EntityFrameworkCore (>= 8.0.6)
- Microsoft.EntityFrameworkCore.Tools (>= 8.0.6)
- Npgsql.EntityFrameworkCore.PostgreSQL (>= 8.0.4)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on DRN.Framework.EntityFramework:
Package | Downloads |
---|---|
DRN.Framework.Testing
DRN.Framework.Testing package encapsulates testing dependencies and provides practical, effective helpers such as resourceful data attributes and test context. This package enables a new encouraging testing technique called as DTT(Duran's Testing Technique). With DTT, any developer can write clean and hassle-free unit and integration tests without complexity. ## Commit Info Author: Duran Serkan KILIÇ Date: 2024-11-20 21:43:34 +0300 Hash: a01e0383b3412a32c63d47596b3474ff6a8b71e5 |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
0.7.0-preview003 | 30 | 11/20/2024 |
0.7.0-preview002 | 66 | 11/17/2024 |
0.7.0-preview001 | 68 | 11/14/2024 |
0.6.0 | 82 | 11/10/2024 |
0.6.0-preview002 | 77 | 11/10/2024 |
0.6.0-preview001 | 77 | 11/10/2024 |
0.5.1-preview002 | 76 | 9/30/2024 |
0.5.1-preview001 | 75 | 9/22/2024 |
0.5.0 | 113 | 8/30/2024 |
0.5.0-preview011 | 82 | 8/30/2024 |
0.5.0-preview010 | 111 | 8/25/2024 |
0.5.0-preview009 | 100 | 8/8/2024 |
0.5.0-preview008 | 101 | 8/7/2024 |
0.5.0-preview007 | 63 | 8/2/2024 |
0.5.0-preview006 | 65 | 7/30/2024 |
0.5.0-preview005 | 92 | 7/27/2024 |
0.5.0-preview004 | 84 | 7/15/2024 |
0.5.0-preview003 | 107 | 6/6/2024 |
0.5.0-preview002 | 99 | 6/5/2024 |
0.5.0-preview001 | 93 | 6/4/2024 |
0.4.0 | 88 | 5/19/2024 |
0.4.0-preview006 | 75 | 5/19/2024 |
0.4.0-preview005 | 99 | 5/12/2024 |
0.4.0-preview004 | 94 | 5/12/2024 |
0.4.0-preview003 | 101 | 5/11/2024 |
0.4.0-preview002 | 118 | 5/8/2024 |
0.4.0-preview001 | 110 | 5/5/2024 |
0.3.1-preview001 | 94 | 4/26/2024 |
0.3.0 | 110 | 4/23/2024 |
0.3.0-preview002 | 94 | 4/23/2024 |
0.3.0-preview001 | 106 | 4/23/2024 |
0.2.2-preview010 | 111 | 4/11/2024 |
0.2.2-preview009 | 94 | 3/18/2024 |
0.2.2-preview008 | 90 | 3/18/2024 |
0.2.2-preview007 | 106 | 3/16/2024 |
0.2.2-preview006 | 85 | 3/11/2024 |
0.2.2-preview005 | 89 | 3/10/2024 |
0.2.2-preview004 | 90 | 3/10/2024 |
0.2.2-preview003 | 136 | 1/22/2024 |
0.2.2-preview002 | 106 | 1/18/2024 |
0.2.2-preview001 | 109 | 1/14/2024 |
0.2.1 | 184 | 1/7/2024 |
0.2.0 | 110 | 12/31/2023 |
0.2.0-preview009 | 85 | 12/31/2023 |
0.2.0-preview008 | 86 | 12/30/2023 |
0.2.0-preview007 | 94 | 12/28/2023 |
0.2.0-preview006 | 85 | 12/27/2023 |
0.2.0-preview005 | 86 | 12/25/2023 |
0.2.0-preview004 | 92 | 12/23/2023 |
0.2.0-preview003 | 94 | 12/20/2023 |
0.2.0-preview002 | 83 | 12/19/2023 |
Not every version includes changes, features or bug fixes. This project can increment version to keep consistency with other DRN.Framework projects.
## Version 0.4.0
My family celebrates the enduring legacy of Mustafa Kemal Atatürk's enlightenment ideals. This release is dedicated to 19 May Commemoration of Atatürk, Youth and Sports Day.
### Breaking Changes
* DrnContext and DrnContextIdentity MigrationsHistoryTable database schema changes as __entity_migrations
* Each DbContext's history table is named according to following convention:
* {contextName.ToSnakeCase()}_history
* DrnContext and DrnContextIdentity applies context name with snake case formatting as default schema name.
### New Features
* DrnContextIdentity added to support ASP.NET Core Identity with DrnContext features
* DrnContextIdentity to inherits IdentityDbContext
### Bug Fixes
* Microsoft.EntityFrameworkCore.Tools PrivateAssets were preventing migration
## Version 0.3.0
My family celebrates the enduring legacy of Mustafa Kemal Atatürk's enlightenment ideals. This release is dedicated to 23 April National Sovereignty and Children's Day.
### Breaking Changes
### New Features
* DrnContext development connection string will be auto generated when
* Environment configuration key set as Development and,
* postgres-password configuration key set and,
* No other connection string is provided for the DbContexts.
* Following keys can set optionally according to DbContextConventions;
* DrnContext_AutoMigrateDevEnvironment
* When set true applies migrations automatically
* DrnContext_DevHost
* DrnContext_DevPort
* DrnContext_DevUsername
* default is postgres
* DrnContext_DevDatabase
* default is drnDb
### Bug Fixes
## Version 0.2.0
### Breaking Changes
### New Features
* DrnContext added
* Implemented IDesignTimeDbContextFactory to enable migrations from dbContext defining projects.
* Implemented IDesignTimeServices to support multi context projects with default output directory in the context specific folder.
* Uses HasDrnContextServiceCollectionModule to automatic registration with AddServicesWithAttributes service collection extension method.
* Uses context name (typeof(TContext).Name) as connection string key by convention.
* Enables DRN.Framework.Testing to create easy and effective integration tests with conventions and automatic registrations.
### Bug Fixes
---
**Semper Progredi: Always Progressive**
## Commit Info
Author: Duran Serkan KILIÇ
Date: 2024-06-04 23:19:15 +0300
Hash: 7bd9c837191ed48d352f865d5742bed9e6a1995f