ClearBlueDesign.EntityFrameworkCore.Scaffolder
1.0.0-alpha7
dotnet add package ClearBlueDesign.EntityFrameworkCore.Scaffolder --version 1.0.0-alpha7
NuGet\Install-Package ClearBlueDesign.EntityFrameworkCore.Scaffolder -Version 1.0.0-alpha7
<PackageReference Include="ClearBlueDesign.EntityFrameworkCore.Scaffolder" Version="1.0.0-alpha7" />
paket add ClearBlueDesign.EntityFrameworkCore.Scaffolder --version 1.0.0-alpha7
#r "nuget: ClearBlueDesign.EntityFrameworkCore.Scaffolder, 1.0.0-alpha7"
// Install ClearBlueDesign.EntityFrameworkCore.Scaffolder as a Cake Addin #addin nuget:?package=ClearBlueDesign.EntityFrameworkCore.Scaffolder&version=1.0.0-alpha7&prerelease // Install ClearBlueDesign.EntityFrameworkCore.Scaffolder as a Cake Tool #tool nuget:?package=ClearBlueDesign.EntityFrameworkCore.Scaffolder&version=1.0.0-alpha7&prerelease
ClearBlueDesign.EntityFrameworkCore.Scaffolder
This is an Entity Framework Core 2.1+ extension for the Microsoft Scaffold-DbContext
database-first scaffolder that allows you to:
- Use lazy loading for all related entities (
virtual
keyword) - Use EFCore.Pluralizer entity name pluralizer by Brice Lambson
- Change the base class of the generated
MyDbContext
class (as may be needed when integrating with the IdentityServer)
public partial class MyDbContext
: IdentityDbContext<User, Role, int, UserClaim, UserRole, UserLogin, RoleClaim, UserToken>
{
...
}
- Import additional assemblies as part of the generated
MyDbContext
class (e.g.using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
) - Override base classes and interfaces of any of the generated entities (for integration with libraries like IdentityServer and implementation of
IAuditableEntity
-style interfaces)
public partial class User : IdentityUser<int>, IAuditableEntity
{
...
}
public partial class Vehicle : IAuditableEntity
{
...
}
Usage
- Add the following package to your startup project:
Install-Package ClearBlueDesign.EntityFrameworkCore.Scaffolder -Pre
- Add
scaffolder.json
file at the root of the project and configure custom scaffolding options as needed. - Add
DesignTimeServices.cs
file containingDesignTimeServices
class that implementsIDesignTimeServices
interface (so that theClearBlueDesign.EntityFrameworkCore.Scaffolder
is injected intoScaffold-DbContext
pipeline):
public class DesignTimeServices : IDesignTimeServices {
public void ConfigureDesignTimeServices(IServiceCollection services) {
services.AddScaffolder();
}
}
- Run scaffolding command with the desired base scaffolder parameters:
Scaffold-DbContext
"<CONNECTION-STRING>"
"Microsoft.EntityFrameworkCore.SqlServer"
-Context "MyDbContext"
-ContextDir "Data"
-OutputDir "Data\Entities"
-Tables "Product","ProductNote","ProductHistory"
Custom Scaffolding Options (scaffolder.json)
This scaffolder extension supports all of the official Scaffold-DbContext
options (see here).
All of the new scaffolder options should be specified inside the scaffolder.json
file at the root of the project:
{
"Scaffolding": {
"UsePluralizer": true,
"UseDataAnnotations": false
},
"DbContext": {
"Base": "DbContext"
},
"EntityType": {
"UseLazyLoading": true,
"BaseMappings": {
"<TableName1>": [ "MyBaseClass1", "IContract" ],
"<TableName2>": [ "MyGenericClass1<Int32>", "IContract" ]
"<TableName3>": [ "IContract" ]
},
"PropertyMappings": {
"<EntityTypeA>": {
"<ColumnNameA>": "<PropertyNameA>",
"<ColumnNameB>": "<PropertyNameB>",
},
"<EntityTypeB>": {
"<ColumnNameC>": "<PropertyNameC>",
"<ColumnNameD>": "<PropertyNameD>",
}
}
"LoadAssemblies": [
"My.Awesome.Project"
]
}
}
Roadmap
- Add support for entity-level data validations using partial entity classes with validation attributes (
[MetadataObject(typeof(Vehicle.Metadata)], [AssertThat], [RequiredIf]
, etc),IValidatableObject
, andValidateEntity
override on the generatedMyDbContext
. - Add support for scaffolding of stored procedures into the generated
MyDbContext
using query types.
Contribution
Want to file a bug, contribute some code, or improve documentation? Excellent! Read up on our guidelines for contributing and then check out one of our issues in the hotlist: community-help.
License
This project is licensed under the MIT license.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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 was computed. 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 was computed. 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. |
.NET Core | netcoreapp3.1 is compatible. |
-
.NETCoreApp 3.1
- Bricelam.EntityFrameworkCore.Pluralizer (>= 1.0.0)
- Microsoft.EntityFrameworkCore (>= 3.1.5)
- Microsoft.EntityFrameworkCore.Design (>= 3.1.5)
- Microsoft.EntityFrameworkCore.Relational (>= 3.1.5)
- Microsoft.EntityFrameworkCore.SqlServer (>= 3.1.5)
- Microsoft.Extensions.Configuration (>= 3.1.5)
- Microsoft.Extensions.Configuration.Json (>= 3.1.5)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 3.1.5)
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 |
---|---|---|
1.0.0-alpha7 | 1,109 | 7/1/2020 |
1.0.0-alpha6 | 314 | 6/29/2020 |
1.0.0-alpha5 | 1,038 | 12/12/2019 |
1.0.0-alpha4 | 338 | 12/12/2019 |
1.0.0-alpha3 | 341 | 12/3/2019 |
1.0.0-alpha.2 | 4,672 | 12/3/2018 |
1.0.0-alpha.1 | 523 | 11/27/2018 |