Skip to content

Commit 4665c18

Browse files
committed
Update package version to 5.0.3, update ReadMe.
1 parent 37fabfb commit 4665c18

File tree

2 files changed

+57
-2
lines changed

2 files changed

+57
-2
lines changed

README.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,3 +323,58 @@ public class ScaffoldingDesignTimeServices : IDesignTimeServices
323323
}
324324
}
325325
```
326+
327+
## Taking Full Control by Extending Handlebars Generators
328+
329+
> For an example of this approach, see `MyHbsCSharpEntityTypeGenerator` in the [ef-core-community-handlebars](https://github.com/TrackableEntities/ef-core-community-handlebars/blob/master/ScaffoldingHandlebars.Tooling/MyHbsCSharpEntityTypeGenerator.cs) repo.
330+
331+
To take full control of context and entity generation, you can extend `HbsCSharpDbContextGenerator` and `HbsCSharpEntityTypeGenerator`, overriding select virtual methods. Then register your custom generators in `ScaffoldingDesignTimeServices.ConfigureDesignTimeServices`.
332+
333+
For example, you may want to add `property-isprimarykey` to the template data in order to insert some code or a comment.
334+
335+
1. Add a `MyHbsCSharpEntityTypeGenerator` to the **.Tooling** project.
336+
- Extend `HbsCSharpEntityTypeGenerator`.
337+
- Override `GenerateProperties`.
338+
- Copy code from the base `GenerateProperties` method.
339+
- Add code that inserts `property-isprimarykey` into the template data.
340+
```csharp
341+
protected override void GenerateProperties(IEntityType entityType)
342+
{
343+
var properties = new List<Dictionary<string, object>>();
344+
foreach (var property in entityType.GetProperties().OrderBy(p => p.GetColumnOrdinal()))
345+
{
346+
// Code elided for clarity
347+
properties.Add(new Dictionary<string, object>
348+
{
349+
{ "property-type", propertyType },
350+
{ "property-name", property.Name },
351+
{ "property-annotations", PropertyAnnotationsData },
352+
{ "property-comment", property.GetComment() },
353+
{ "property-isnullable", property.IsNullable },
354+
{ "nullable-reference-types", _options?.Value?.EnableNullableReferenceTypes == true },
355+
356+
// Add new item to template data
357+
{ "property-isprimarykey", property.IsPrimaryKey() }
358+
});
359+
}
360+
361+
var transformedProperties = EntityTypeTransformationService.TransformProperties(properties);
362+
363+
// Add to transformed properties
364+
for (int i = 0; i < transformedProperties.Count ; i++)
365+
{
366+
transformedProperties[i].Add("property-isprimarykey", properties[i]["property-isprimarykey"]);
367+
}
368+
369+
TemplateData.Add("properties", transformedProperties);
370+
}
371+
```
372+
2. Register `MyHbsCSharpEntityTypeGenerator` in `ScaffoldingDesignTimeServices.ConfigureDesignTimeServices`.
373+
```csharp
374+
services.AddSingleton<ICSharpEntityTypeGenerator, MyHbsCSharpEntityTypeGenerator>();
375+
```
376+
3. Update **CSharpEntityType/Partials/Properties.hbs** to add `property-isprimarykey`.
377+
```handlebars
378+
{{#if property-isprimarykey}} // Primary Key{{/if}}
379+
```
380+
4. Run the `dotnet ef dbcontext scaffold` command from above.

src/EntityFrameworkCore.Scaffolding.Handlebars/EntityFrameworkCore.Scaffolding.Handlebars.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<PropertyGroup>
44
<TargetFramework>netstandard2.1</TargetFramework>
55
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
6-
<Version>5.0.2</Version>
6+
<Version>5.0.3</Version>
77
<Authors>Tony Sneed</Authors>
88
<Company>Tony Sneed</Company>
99
<Title>Entity Framework Core Scaffolding with Handlebars</Title>
@@ -12,7 +12,7 @@
1212
<PackageProjectUrl>https://github.com/TrackableEntities/EntityFrameworkCore.Scaffolding.Handlebars</PackageProjectUrl>
1313
<PackageIcon>icon.png</PackageIcon>
1414
<PackageTags>scaffolding reverse-engineer entity-framework-core handlebars</PackageTags>
15-
<PackageReleaseNotes>See: https://github.com/TrackableEntities/EntityFrameworkCore.Scaffolding.Handlebars/releases/tag/v5.0.2</PackageReleaseNotes>
15+
<PackageReleaseNotes>See: https://github.com/TrackableEntities/EntityFrameworkCore.Scaffolding.Handlebars/releases/tag/v5.0.3</PackageReleaseNotes>
1616
<LangVersion>latest</LangVersion>
1717
<IncludeSource>true</IncludeSource>
1818
<SignAssembly>true</SignAssembly>

0 commit comments

Comments
 (0)