TrackableEntities / EntityFrameworkCore.Scaffolding.Handlebars

Scaffold EF Core models using Handlebars templates.
MIT License
210 stars 53 forks source link

Update the EF Core 3.0 #67

Closed daiplusplus closed 4 years ago

daiplusplus commented 5 years ago

I'm attempting to use this with EF Core 3.0 Preview 6 and I get this error in the Package Manager Console when I run dotnet ef scaffold. I know you don't advertise compatibility with EF Core 3.0, but I thought I'd file this so you're aware:

Output:

Using project 'MyProject.Data\MyProject.Data.csproj'.
Using startup project 'MyProject.Data\MyProject.Data.csproj'.
Writing 'MyProject.Data\obj\MyProject.Data.csproj.EntityFrameworkCore.targets'...
dotnet msbuild /target:GetEFProjectMetadata /property:EFProjectMetadataFile=C:\Users\David\AppData\Local\Temp\tmp84BA.tmp /verbosity:quiet /nologo MyProject.Data\MyProject.Data.csproj
Writing 'MyProject.Data\obj\MyProject.Data.csproj.EntityFrameworkCore.targets'...
dotnet msbuild /target:GetEFProjectMetadata /property:EFProjectMetadataFile=C:\Users\David\AppData\Local\Temp\tmp8AC6.tmp /verbosity:quiet /nologo MyProject.Data\MyProject.Data.csproj
dotnet build MyProject.Data\MyProject.Data.csproj /verbosity:quiet /nologo

Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:02.67
dotnet exec --depsfile C:\git\MyProject2\server\MyProject.Data\bin\Debug\netcoreapp2.2\MyProject.Data.deps.json --additionalprobingpath C:\Users\David\.nuget\packages --additionalprobingpath "C:\Program Files\dotnet\sdk\NuGetFallbackFolder" --runtimeconfig C:\git\MyProject2\server\MyProject.Data\bin\Debug\netcoreapp2.2\MyProject.Data.runtimeconfig.json C:\Users\David\.dotnet\tools\.store\dotnet-ef\3.0.0-preview6.19304.10\dotnet-ef\3.0.0-preview6.19304.10\tools\netcoreapp3.0\any\tools\netcoreapp2.0\any\ef.dll dbcontext scaffold "Server=(local);Database=MyProject;Integrated Security=true;" Microsoft.EntityFrameworkCore.SqlServer --data-annotations --context MyProjectDbContext --context-dir Model --force -o Model --assembly C:\git\MyProject2\server\MyProject.Data\bin\Debug\netcoreapp2.2\MyProject.Data.dll --startup-assembly C:\git\MyProject2\server\MyProject.Data\bin\Debug\netcoreapp2.2\MyProject.Data.dll --project-dir C:\git\MyProject2\server\MyProject.Data\ --language C# --working-dir C:\git\MyProject2\server --verbose --root-namespace MyProject.Data
Using assembly 'MyProject.Data'.
Using startup assembly 'MyProject.Data'.
Using application base 'C:\git\MyProject2\server\MyProject.Data\bin\Debug\netcoreapp2.2'.
Using working directory 'C:\git\MyProject2\server\MyProject.Data'.
Using root namespace 'MyProject.Data'.
Using project directory 'C:\git\MyProject2\server\MyProject.Data\'.
Finding design-time services for provider 'Microsoft.EntityFrameworkCore.SqlServer'...
Using design-time services from provider 'Microsoft.EntityFrameworkCore.SqlServer'.
Finding design-time services referenced by assembly 'MyProject.Data'.
Using design-time services from assembly 'Bricelam.EntityFrameworkCore.Pluralizer'.
Finding IDesignTimeServices implementations in assembly 'MyProject.Data'...
Using design-time services from class 'ScaffoldingDesignTimeServices'.
System.TypeLoadException: Method 'GenerateModel' in type 'EntityFrameworkCore.Scaffolding.Handlebars.HbsCSharpModelGenerator' from assembly 'EntityFrameworkCore.Scaffolding.Handlebars, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b10b51e7b9be6a2e' does not have an implementation.
   at Microsoft.EntityFrameworkCore.Design.ServiceCollectionExtensions.AddHandlebarsScaffolding(IServiceCollection services, ReverseEngineerOptions options, LanguageOptions language)
   at MyProject.Data.ScaffoldingDesignTimeServices.ConfigureDesignTimeServices(IServiceCollection services) in C:\git\MyProject2\server\MyProject.Data\ScaffoldingDesignTimeServices.cs:line 16
   at Microsoft.EntityFrameworkCore.Design.Internal.DesignTimeServicesBuilder.ConfigureUserServices(IServiceCollection services)
   at Microsoft.EntityFrameworkCore.Design.Internal.DesignTimeServicesBuilder.Build(String provider)
   at Microsoft.EntityFrameworkCore.Design.Internal.DatabaseOperations.ScaffoldContext(String provider, String connectionString, String outputDir, String outputContextDir, String dbContextClassName, IEnumerable`1 schemas, IEnumerable`1 tables, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContextImpl(String provider, String connectionString, String outputDir, String outputDbContextDir, String dbContextClassName, IEnumerable`1 schemaFilters, IEnumerable`1 tableFilters, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContext.<>c__DisplayClass0_0.<.ctor>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0`1.<Execute>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
Method 'GenerateModel' in type 'EntityFrameworkCore.Scaffolding.Handlebars.HbsCSharpModelGenerator' from assembly 'EntityFrameworkCore.Scaffolding.Handlebars, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b10b51e7b9be6a2e' does not have an implementation.
tonysneed commented 5 years ago

Thanks, glad to have an issue for porting to EF Core 3.0. Looks like it needs a DI registration. I’ll create a PR for the port.

Cheers, Tony

tonysneed commented 5 years ago

Looks like there is quite a bit of drift between v3.0.0-preview6 and the EF Core master branch, so I think I'd like to hold off on migrating Handlebars scaffolding until EF Core RC drops later this month (July). Stay tuned! :)

tonysneed commented 5 years ago

Now that we have EF Core Preview8, I will create a release that aligns.

daiplusplus commented 5 years ago

Great, thanks. I'm itching to get away from EF Core's stock scaffolding asap.

tonysneed commented 5 years ago

Just published the update to EF Core 3.0 Preview8: https://www.nuget.org/packages/EntityFrameworkCore.Scaffolding.Handlebars/3.0.0-preview8

ErikEJ commented 5 years ago

FYI: https://github.com/ErikEJ/EFCorePowerTools/issues/268

tonysneed commented 4 years ago

Fixed by #86.