Hello,
Our version : ASP.NET CORE MVC & jQuery .NET Core 3.1 v8.2.1
We facing a problem with radtool (2.2.0.4) when regenerating an existing entity for add 2 new string property.
We have migrate to the 8.2.1 a few weeks ago and not use the rad tool since.
Thanks for your help, tell me if you need any other informations for the diagnostic.
Nicolas.
-> MachinesAppService.cs is being generated.
Warning: System.Exception: Word can not be null. exiting...
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.PlaceholderReplacer.Lower(String word)
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.PlaceholderReplacer.ReplaceAlsoWithLowerCase(String template, String placeholder, String value)
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.PlaceholderReplacer.Replace(String template, EntityConfiguration entity, Property property, EnumDefinition enumDefinition, NavigationProperty navigationProperty)
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.GenericFileContentGenerator.SetEnums()
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.GenericFileContentGenerator.GenerateAndGetContent()
at AspNetZeroRadTool.GeneratorFromTemplate.FileGeneratorBasedOnEntity(TemplateInfo templateInfo, TemplatePathInfo templatePathInfo, String targetFolderRoot, EntityConfiguration entity)
-> IMachinesAppService.cs is being generated.
-> MachineConsts.cs is being generated.
-> CreateOrEditMachineDto.cs is being generated.
Warning: System.Exception: Word can not be null. exiting...
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.PlaceholderReplacer.Lower(String word)
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.PlaceholderReplacer.ReplaceAlsoWithLowerCase(String template, String placeholder, String value)
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.PlaceholderReplacer.Replace(String template, EntityConfiguration entity, Property property, EnumDefinition enumDefinition, NavigationProperty navigationProperty)
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.GenericFileContentGenerator.SetEnums()
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.GenericFileContentGenerator.GenerateAndGetContent()
at AspNetZeroRadTool.GeneratorFromTemplate.FileGeneratorBasedOnEntity(TemplateInfo templateInfo, TemplatePathInfo templatePathInfo, String targetFolderRoot, EntityConfiguration entity)
-> MachineDto.cs is being generated.
Warning: System.Exception: Word can not be null. exiting...
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.PlaceholderReplacer.Lower(String word)
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.PlaceholderReplacer.ReplaceAlsoWithLowerCase(String template, String placeholder, String value)
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.PlaceholderReplacer.Replace(String template, EntityConfiguration entity, Property property, EnumDefinition enumDefinition, NavigationProperty navigationProperty)
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.GenericFileContentGenerator.SetEnums()
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.GenericFileContentGenerator.GenerateAndGetContent()
at AspNetZeroRadTool.GeneratorFromTemplate.FileGeneratorBasedOnEntity(TemplateInfo templateInfo, TemplatePathInfo templatePathInfo, String targetFolderRoot, EntityConfiguration entity)
-> GetAllMachinesForExcelInput.cs is being generated.
-> GetAllForLookupTableInput.cs is being generated.
-> GetAllMachinesInput.cs is being generated.
-> GetMachineForViewDto.cs is being generated.
-> GetMachineForEditOutput.cs is being generated.
-> MachineShopfloorLookupTableDto.cs is being generated.
-> MachineAgentLookupTableDto.cs is being generated.
-> MachineDirectoryLookupTableDto.cs is being generated.
-> Machine.cs is being generated.
Warning: System.Exception: Word can not be null. exiting...
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.PlaceholderReplacer.Lower(String word)
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.PlaceholderReplacer.ReplaceAlsoWithLowerCase(String template, String placeholder, String value)
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.PlaceholderReplacer.Replace(String template, EntityConfiguration entity, Property property, EnumDefinition enumDefinition, NavigationProperty navigationProperty)
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.GenericFileContentGenerator.SetEnums()
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.GenericFileContentGenerator.GenerateAndGetContent()
at AspNetZeroRadTool.GeneratorFromTemplate.FileGeneratorBasedOnEntity(TemplateInfo templateInfo, TemplatePathInfo templatePathInfo, String targetFolderRoot, EntityConfiguration entity)
-> MachinesExcelExporter.cs is being generated.
-> IMachinesExcelExporter.cs is being generated.
-> AppPermissions.cs is being modified.
-> AppAuthorizationProvider.cs is being modified.
-> GekkoDbContext.cs is being modified.
-> CustomDtoMapper.cs is being modified.
Running add-migration...
Could not execute because the specified command or file was not found.
Possible reasons for this include:
* You misspelled a built-in dotnet command.
* You intended to execute a .NET Core program, but dotnet-ef does not exist.
* You intended to run a global tool, but a dotnet-prefixed executable with this name could not be found on the PATH.
-> MachinesController.cs is being generated.
-> _CreateOrEditModal.cshtml is being generated.
Warning: System.Exception: Word can not be null. exiting...
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.PlaceholderReplacer.Lower(String word)
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.PlaceholderReplacer.ReplaceAlsoWithLowerCase(String template, String placeholder, String value)
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.PlaceholderReplacer.Replace(String template, EntityConfiguration entity, Property property, EnumDefinition enumDefinition, NavigationProperty navigationProperty)
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.GenericFileContentGenerator.SetEnums()
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.GenericFileContentGenerator.GenerateAndGetContent()
at AspNetZeroRadTool.GeneratorFromTemplate.FileGeneratorBasedOnEntity(TemplateInfo templateInfo, TemplatePathInfo templatePathInfo, String targetFolderRoot, EntityConfiguration entity)
-> _CreateOrEditModal.js is being generated.
-> _CreateOrEditModal.min.js is being generated.
-> CreateOrEditMachineViewModel.cs is being generated.
-> Index.cshtml is being generated.
Warning: System.Exception: Word can not be null. exiting...
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.PlaceholderReplacer.Lower(String word)
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.PlaceholderReplacer.ReplaceAlsoWithLowerCase(String template, String placeholder, String value)
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.PlaceholderReplacer.Replace(String template, EntityConfiguration entity, Property property, EnumDefinition enumDefinition, NavigationProperty navigationProperty)
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.GenericFileContentGenerator.SetEnums()
at AspNetZeroRadTool.FileWizards.FileGenerators.Generic.GenericFileContentGenerator.GenerateAndGetContent()
at AspNetZeroRadTool.GeneratorFromTemplate.FileGeneratorBasedOnEntity(TemplateInfo templateInfo, TemplatePathInfo templatePathInfo, String targetFolderRoot, EntityConfiguration entity)
-> Index.js is being generated.
-> Index.min.js is being generated.
-> _MachineShopfloorLookupTableModal.cshtml is being generated.
-> _MachineAgentLookupTableModal.cshtml is being generated.
-> _MachineDirectoryLookupTableModal.cshtml is being generated.
-> _MachineShopfloorLookupTableModal.js is being generated.
-> _MachineAgentLookupTableModal.js is being generated.
-> _MachineDirectoryLookupTableModal.js is being generated.
-> MachineMachineShopfloorLookupTableViewModel.cs is being generated.
-> MachineMachineAgentLookupTableViewModel.cs is being generated.
-> MachineMachineDirectoryLookupTableViewModel.cs is being generated.
-> _ViewMachineModal.cshtml is being generated.
-> MachineViewModel.cs is being generated.
-> MachinesViewModel.cs is being generated.
-> AppNavigationProvider.cs is being modified.
-> AppPageNames.cs is being modified.
-> Gekko.xml is being modified.
Code generation is complete. Press ENTER to exit...
11 Answer(s)
-
0
Hi @willignicolas Can you please share
[EntityNameSpace].Machines.json
. It is located in AspNetZeroRadTool folder.You can share it here or send it to [email protected]
-
0
Yes of course =>
{ "IsRegenerate": true, "MenuPosition": "main", "RelativeNamespace": "Entity", "EntityName": "Machine", "EntityNamePlural": "Machines", "TableName": "GkoMachines", "PrimaryKeyType": "int", "BaseClass": "FullAuditedEntity", "EntityHistory": false, "AutoMigration": true, "UpdateDatabase": false, "CreateUserInterface": true, "CreateViewOnly": true, "CreateExcelExport": true, "PagePermission": { "Host": false, "Tenant": true }, "Properties": [ { "Name": "IsActive", "Type": "bool", "MaxLength": -1, "MinLength": -1, "Range": { "IsRangeSet": false, "MinimumValue": 0, "MaximumValue": 0 }, "Required": false, "Nullable": false, "Regex": "", "UserInterface": { "AdvancedFilter": true, "List": true, "CreateOrUpdate": true } }, { "Name": "Name", "Type": "string", "MaxLength": 100, "MinLength": 1, "Range": { "IsRangeSet": false, "MinimumValue": 0, "MaximumValue": 0 }, "Required": true, "Nullable": false, "Regex": "", "UserInterface": { "AdvancedFilter": true, "List": true, "CreateOrUpdate": true } }, { "Name": "Description", "Type": "string", "MaxLength": 300, "MinLength": 0, "Range": { "IsRangeSet": false, "MinimumValue": 0, "MaximumValue": 0 }, "Required": false, "Nullable": false, "Regex": "", "UserInterface": { "AdvancedFilter": true, "List": true, "CreateOrUpdate": true } }, { "Name": "CommunicationType", "Type": "eCommunicationType", "MaxLength": -1, "MinLength": -1, "Range": { "IsRangeSet": false, "MinimumValue": 0, "MaximumValue": 0 }, "Required": false, "Nullable": false, "Regex": "", "UserInterface": { "AdvancedFilter": true, "List": true, "CreateOrUpdate": true } }, { "Name": "SerialPortName", "Type": "string", "MaxLength": 20, "MinLength": 0, "Range": { "IsRangeSet": false, "MinimumValue": 0, "MaximumValue": 0 }, "Required": false, "Nullable": false, "Regex": "", "UserInterface": { "AdvancedFilter": true, "List": true, "CreateOrUpdate": true } }, { "Name": "SerialBaudrate", "Type": "eRs232BaudRate", "MaxLength": -1, "MinLength": -1, "Range": { "IsRangeSet": false, "MinimumValue": 0, "MaximumValue": 0 }, "Required": false, "Nullable": false, "Regex": "", "UserInterface": { "AdvancedFilter": true, "List": true, "CreateOrUpdate": true } }, { "Name": "SerialParity", "Type": "eRs232Parity", "MaxLength": -1, "MinLength": -1, "Range": { "IsRangeSet": false, "MinimumValue": 0, "MaximumValue": 0 }, "Required": false, "Nullable": false, "Regex": "", "UserInterface": { "AdvancedFilter": true, "List": true, "CreateOrUpdate": true } }, { "Name": "SerialWordLength", "Type": "eRs232WordLength", "MaxLength": -1, "MinLength": -1, "Range": { "IsRangeSet": false, "MinimumValue": 0, "MaximumValue": 0 }, "Required": false, "Nullable": false, "Regex": "", "UserInterface": { "AdvancedFilter": true, "List": true, "CreateOrUpdate": true } }, { "Name": "SerialStopBits", "Type": "eRs232StopBit", "MaxLength": -1, "MinLength": -1, "Range": { "IsRangeSet": false, "MinimumValue": 0, "MaximumValue": 0 }, "Required": false, "Nullable": false, "Regex": "", "UserInterface": { "AdvancedFilter": true, "List": true, "CreateOrUpdate": true } }, { "Name": "SerialFlowControl", "Type": "eRs232FlowControl", "MaxLength": -1, "MinLength": -1, "Range": { "IsRangeSet": false, "MinimumValue": 0, "MaximumValue": 0 }, "Required": false, "Nullable": false, "Regex": "", "UserInterface": { "AdvancedFilter": true, "List": true, "CreateOrUpdate": true } }, { "Name": "SerialRxTimeout", "Type": "int", "MaxLength": -1, "MinLength": -1, "Range": { "IsRangeSet": false, "MinimumValue": 0, "MaximumValue": 0 }, "Required": false, "Nullable": false, "Regex": "", "UserInterface": { "AdvancedFilter": true, "List": true, "CreateOrUpdate": true } }, { "Name": "SerialTxTimeout", "Type": "int", "MaxLength": -1, "MinLength": -1, "Range": { "IsRangeSet": false, "MinimumValue": 0, "MaximumValue": 0 }, "Required": false, "Nullable": false, "Regex": "", "UserInterface": { "AdvancedFilter": true, "List": true, "CreateOrUpdate": true } }, { "Name": "SerialTxDelay", "Type": "int", "MaxLength": -1, "MinLength": -1, "Range": { "IsRangeSet": false, "MinimumValue": 0, "MaximumValue": 0 }, "Required": false, "Nullable": false, "Regex": "", "UserInterface": { "AdvancedFilter": true, "List": true, "CreateOrUpdate": true } }, { "Name": "RemoteFtpHost", "Type": "string", "MaxLength": -1, "MinLength": -1, "Range": { "IsRangeSet": false, "MinimumValue": 0, "MaximumValue": 0 }, "Required": false, "Nullable": false, "Regex": "", "UserInterface": { "AdvancedFilter": false, "List": false, "CreateOrUpdate": true } }, { "Name": "RemoteFtpPort", "Type": "int", "MaxLength": -1, "MinLength": -1, "Range": { "IsRangeSet": false, "MinimumValue": 0, "MaximumValue": 0 }, "Required": false, "Nullable": true, "Regex": "", "UserInterface": { "AdvancedFilter": false, "List": false, "CreateOrUpdate": true } }, { "Name": "RemoteFtpLogin", "Type": "string", "MaxLength": -1, "MinLength": -1, "Range": { "IsRangeSet": false, "MinimumValue": 0, "MaximumValue": 0 }, "Required": false, "Nullable": false, "Regex": "", "UserInterface": { "AdvancedFilter": false, "List": false, "CreateOrUpdate": true } }, { "Name": "RemoteFtpPassword", "Type": "string", "MaxLength": -1, "MinLength": -1, "Range": { "IsRangeSet": false, "MinimumValue": 0, "MaximumValue": 0 }, "Required": false, "Nullable": false, "Regex": "", "UserInterface": { "AdvancedFilter": false, "List": false, "CreateOrUpdate": true } }, { "Name": "RemoteFtpAuthenticationType", "Type": "eRemoteFtpAuthenticationType", "MaxLength": -1, "MinLength": -1, "Range": { "IsRangeSet": false, "MinimumValue": 0, "MaximumValue": 0 }, "Required": false, "Nullable": false, "Regex": "", "UserInterface": { "AdvancedFilter": false, "List": false, "CreateOrUpdate": true } }, { "Name": "RemoteFtpProtocol", "Type": "eRemoteFtpProtocol", "MaxLength": -1, "MinLength": -1, "Range": { "IsRangeSet": false, "MinimumValue": 0, "MaximumValue": 0 }, "Required": false, "Nullable": false, "Regex": "", "UserInterface": { "AdvancedFilter": false, "List": false, "CreateOrUpdate": true } }, { "Name": "RemoteSmbNetworkPath", "Type": "string", "MaxLength": -1, "MinLength": -1, "Range": { "IsRangeSet": false, "MinimumValue": 0, "MaximumValue": 0 }, "Required": false, "Nullable": false, "Regex": "", "UserInterface": { "AdvancedFilter": false, "List": false, "CreateOrUpdate": true } } ], "NavigationProperties": [ { "Namespace": "Gekko.Entity", "ForeignEntityName": "Shopfloor", "IdType": "int", "IsNullable": false, "PropertyName": "ShopfloorId", "DisplayPropertyName": "Name", "DuplicationNumber": 0, "RelationType": "single", "ViewType": null }, { "Namespace": "Gekko.Entity", "ForeignEntityName": "Agent", "IdType": "int", "IsNullable": true, "PropertyName": "AgentId", "DisplayPropertyName": "Name", "DuplicationNumber": 0, "RelationType": "single", "ViewType": null }, { "Namespace": "Gekko.Entity", "ForeignEntityName": "Directory", "IdType": "int", "IsNullable": true, "PropertyName": "RootDirectoryId", "DisplayPropertyName": "Name", "DuplicationNumber": 0, "RelationType": "single", "ViewType": null } ], "EnumDefinitions": [ { "Name": "eMachineCommunicationType", "Namespace": "Gekko.enums", "EnumProperties": [ { "Name": "None", "Value": 0 }, { "Name": "RS232Standard", "Value": 1 } ] }, { "Name": "eRs232BaudRate", "Namespace": "Gekko.enums", "EnumProperties": [ { "Name": "None", "Value": 0 }, { "Name": "Baud110", "Value": 1 }, { "Name": "Baud300", "Value": 2 }, { "Name": "Baud1200", "Value": 3 }, { "Name": "Baud2400", "Value": 4 }, { "Name": "Baud4800", "Value": 5 }, { "Name": "Baud9600", "Value": 6 }, { "Name": "Baud19200", "Value": 7 }, { "Name": "Baud38400", "Value": 8 }, { "Name": "Baud57600", "Value": 9 }, { "Name": "Baud115200", "Value": 10 } ] }, { "Name": "eRs232Parity", "Namespace": "Gekko.enums", "EnumProperties": [ { "Name": "None", "Value": 0 }, { "Name": "Odd", "Value": 1 }, { "Name": "Even", "Value": 2 } ] }, { "Name": "eRs232WordLength", "Namespace": "Gekko.enums", "EnumProperties": [ { "Name": "Seven", "Value": 0 }, { "Name": "Eight", "Value": 8 } ] }, { "Name": "eRs232StopBit", "Namespace": "Gekko.enums", "EnumProperties": [ { "Name": "One", "Value": 0 }, { "Name": "Two", "Value": 1 } ] }, { "Name": "eRs232FlowControl", "Namespace": "Gekko.enums", "EnumProperties": [ { "Name": "None", "Value": 0 }, { "Name": "Software", "Value": 1 }, { "Name": "Hardware", "Value": 2 } ] }, { "Name": "eRemoteFtpAuthenticationType", "Namespace": "Gekko.Enums", "EnumProperties": [ { "Name": "None", "Value": 0 }, { "Name": "Standard", "Value": 1 }, { "Name": "Anonymous", "Value": 2 } ] }, { "Name": "eRemoteFtpProtocol", "Namespace": "Gekko.Enums", "EnumProperties": [ { "Name": "None", "Value": 0 }, { "Name": "Ftp", "Value": 1 } ] } ] }
-
0
Your table has property typed
eCommunicationType
{ "Name": "CommunicationType", - "Type": "eCommunicationType", "MaxLength": -1, "MinLength": -1, "Range": { "IsRangeSet": false, "MinimumValue": 0, "MaximumValue": 0 }, "Required": false, "Nullable": false, "Regex": "", "UserInterface": { "AdvancedFilter": true, "List": true, "CreateOrUpdate": true } },
But your enum name is
eMachineCommunicationType
"EnumDefinitions": [ { - "Name": "eMachineCommunicationType", "Namespace": "Gekko.enums", "EnumProperties": [ { "Name": "None", "Value": 0 }, { "Name": "RS232Standard", "Value": 1 } ] },
If you change it as seen below it works as expected
- "Type": "eCommunicationType", + "Type": "eMachineCommunicationType",
Or change your enum name.
Is this json generated by Radtool, did you change it manually?
-
1
Yes it works well now thank you very much.
Sorry to have bothered you with an internal problem. It is indeed a merge error and not at all a concern of RadTool.
However, I have systematically had the following error for a while when launching the add-migration
Running add-migration... Could not execute because the specified command or file was not found. Possible reasons for this include: * You misspelled a built-in dotnet command. * You intended to execute a .NET Core program, but dotnet-ef does not exist. * You intended to run a global tool, but a dotnet-prefixed executable with this name could not be found on the PATH.
It is not blocking at all since the add-migration command made by after works well.
Thank you again for your availability and your always precious help.
Nicolas
-
0
Thank you again for your availability and your always precious help.
You are welcome, its our job. :)
However, I have systematically had the following error for a while when launching the add-migration
Can you please open cmd prompt and try tor run
dotnet ef
-
0
I make a regeneration of an entity and yes a let add-migration checked in RadTool.
Then I have this error on RadTool commandline output result.
After that I make successfully a add-migration in visual studio in Package manager console on the Entityframeworkcore project.
-
0
Can you please open cmd prompt in *.EntityFrameworkCore project's folder and try tor run dotnet ef
Yes same error here.
-
0
PM> dotnet ef dotnet : Could not execute because the specified command or file was not found. At line:1 char:1 + dotnet ef + ~~~~~~~~~ + CategoryInfo : NotSpecified: (Could not execu... was not found.:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError Possible reasons for this include: * You misspelled a built-in dotnet command. * You intended to execute a .NET Core program, but dotnet-ef does not exist. * You intended to r un a global tool, but a dotnet-prefixed executable with this name could not be found on the PATH.
-
0
Can you please check that: https://stackoverflow.com/a/56876020
-
0
Yes after installed the dotnet ef tool and modify the PATH it's works now.
Thanks for your help.
Nicolas
-
0
You are welcome