Skip to content

Commit 6a92f7c

Browse files
author
Anthony Sneed
authored
Merge pull request #46 from TrackableEntities/restore-add-helpers
Restore AddHandlebarsHelpers with fix.
2 parents 234d1f5 + 17007a4 commit 6a92f7c

File tree

4 files changed

+26
-21
lines changed

4 files changed

+26
-21
lines changed

README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ Scaffold EF Core models using Handlebars templates.
7171

7272
You can register Handlebars helpers in the `ScaffoldingDesignTimeServices` where setup takes place.
7373
- Create a named tuple as shown with `myHelper` below.
74-
- Pass the tuple to the `AddHandlebarsScaffolding` extension method.
74+
- Pass the tuple to the `AddHandlebarsHelpers` extension method.
7575
- You may register as many helpers as you wish.
7676

7777
```csharp
@@ -86,7 +86,10 @@ public class ScaffoldingDesignTimeServices : IDesignTimeServices
8686
var myHelper = (helperName: "my-helper", helperFunction: (Action<TextWriter, object, object[]>) MyHbsHelper);
8787

8888
// Add Handlebars scaffolding templates
89-
services.AddHandlebarsScaffolding(options, myHelper);
89+
services.AddHandlebarsScaffolding(options);
90+
91+
// Add Handlebars helpers
92+
services.AddHandlebarsHelpers(myHelper);
9093
}
9194

9295
// Sample Handlebars helper

sample/ScaffoldingSample/Sample.ReadMe.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,10 @@ public class ScaffoldingDesignTimeServices : IDesignTimeServices
3232
var myHelper = (helperName: "my-helper", helperFunction: (Action<TextWriter, object, object[]>) MyHbsHelper);
3333

3434
// Add Handlebars scaffolding templates
35-
services.AddHandlebarsScaffolding(options, myHelper);
35+
services.AddHandlebarsScaffolding(options);
36+
37+
// Add Handlebars helpers
38+
services.AddHandlebarsHelpers(myHelper);
3639
}
3740

3841
// Sample Handlebars helper

sample/ScaffoldingSample/ScaffoldingDesignTimeServices.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@
77
You may customize generated classes by modifying the Handlebars templates in the CodeTemplates folder.
88
Then run a 'dotnet ef dbcontext scaffold' command to reverse engineer classes from an existing database.
99
For example:
10-
dotnet ef dbcontext scaffold "Data Source=(localdb)\MSSQLLocalDB; Initial Catalog=NorthwindSlim; Integrated Security=True" Microsoft.EntityFrameworkCore.SqlServer -o Models -c NorthwindSlimContext -f
10+
dotnet ef dbcontext scaffold "Data Source=(localdb)\MSSQLLocalDB; Initial Catalog=NorthwindSlim; Integrated Security=True" Microsoft.EntityFrameworkCore.SqlServer -o Models -c NorthwindSlimContext -f --context-dir Contexts
1111
*/
1212

1313
namespace ScaffoldingSample
1414
{
1515
public class ScaffoldingDesignTimeServices : IDesignTimeServices
1616
{
17-
public void ConfigureDesignTimeServices(IServiceCollection services)
17+
public void ConfigureDesignTimeServices(IServiceCollection services)
1818
{
1919
// Generate both context and entities
2020
var options = ReverseEngineerOptions.DbContextAndEntities;
@@ -23,7 +23,10 @@ public void ConfigureDesignTimeServices(IServiceCollection services)
2323
var myHelper = (helperName: "my-helper", helperFunction: (Action<TextWriter, object, object[]>) MyHbsHelper);
2424

2525
// Add Handlebars scaffolding templates
26-
services.AddHandlebarsScaffolding(options, myHelper);
26+
services.AddHandlebarsScaffolding(options);
27+
28+
// Add Handlebars helpers
29+
services.AddHandlebarsHelpers(myHelper);
2730
}
2831

2932
// Sample Handlebars helper

src/EntityFrameworkCore.Scaffolding.Handlebars/ServiceCollectionExtensions.cs

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,9 @@ public static class ServiceCollectionExtensions
3030
/// </summary>
3131
/// <param name="services"> The <see cref="IServiceCollection" /> to add services to. </param>
3232
/// <param name="options">Options for reverse engineering classes from an existing database.</param>
33-
/// <param name="handlebarsHelpers">Handlebars helpers.</param>
3433
/// <returns>The same service collection so that multiple calls can be chained.</returns>
3534
public static IServiceCollection AddHandlebarsScaffolding(this IServiceCollection services,
36-
ReverseEngineerOptions options = ReverseEngineerOptions.DbContextAndEntities,
37-
params (string helperName, Action<TextWriter, object, object[]> helperFunction)[] handlebarsHelpers)
35+
ReverseEngineerOptions options = ReverseEngineerOptions.DbContextAndEntities)
3836
{
3937
Type dbContextGeneratorImpl;
4038
var dbContextGeneratorType = typeof(ICSharpDbContextGenerator);
@@ -59,15 +57,7 @@ public static IServiceCollection AddHandlebarsScaffolding(this IServiceCollectio
5957
services.AddSingleton<IEntityTypeTemplateService, HbsEntityTypeTemplateService>();
6058
services.AddSingleton<IModelCodeGenerator, HbsCSharpModelGenerator>();
6159
services.AddSingleton<IReverseEngineerScaffolder, HbsReverseEngineerScaffolder>();
62-
services.AddSingleton<IHbsHelperService>(provider =>
63-
{
64-
var helpers = new Dictionary<string, Action<TextWriter, object, object[]>>
65-
{
66-
{Constants.SpacesHelper, HandlebarsHelpers.SpacesHelper}
67-
};
68-
handlebarsHelpers.ToList().ForEach(h => helpers.Add(h.helperName, h.helperFunction));
69-
return new HbsHelperService(helpers);
70-
});
60+
services.AddSingleton<IHbsHelperService, HbsHelperService>();
7161
return services;
7262
}
7363

@@ -80,12 +70,18 @@ public static IServiceCollection AddHandlebarsScaffolding(this IServiceCollectio
8070
/// <param name="services"> The <see cref="IServiceCollection" /> to add services to. </param>
8171
/// <param name="handlebarsHelpers">Handlebars helpers.</param>
8272
/// <returns>The same service collection so that multiple calls can be chained.</returns>
83-
[Obsolete("AddHandlebarsHelpers has been deprecated. Pass helpers to AddHandlebarsScaffolding instead.")]
8473
public static IServiceCollection AddHandlebarsHelpers(this IServiceCollection services,
8574
params (string helperName, Action<TextWriter, object, object[]> helperFunction)[] handlebarsHelpers)
8675
{
87-
var helperService = services.BuildServiceProvider().GetRequiredService<IHbsHelperService>();
88-
handlebarsHelpers.ToList().ForEach(h => helperService.Helpers.Add(h.helperName, h.helperFunction));
76+
services.AddSingleton<IHbsHelperService>(provider =>
77+
{
78+
var helpers = new Dictionary<string, Action<TextWriter, object, object[]>>
79+
{
80+
{Constants.SpacesHelper, HandlebarsHelpers.SpacesHelper}
81+
};
82+
handlebarsHelpers.ToList().ForEach(h => helpers.Add(h.helperName, h.helperFunction));
83+
return new HbsHelperService(helpers);
84+
});
8985
return services;
9086
}
9187
}

0 commit comments

Comments
 (0)