11 Answer(s)
-
0
Hi @gbskwadmin
First of all, we apologize for the problem you are experiencing. Is this problem occurring in ASP.NET Zero or during the Power Tools entity generation process? If so, could you please share your version information with us? If it's a problem on our end, we can develop a quick fix plan to prevent others from experiencing the same issue. We believe you can resolve the problem by following the instructions below.
The issue is that
getEndOfDayForDate()andgetStartOfDayForDate()returnChainableDateTime, but the service proxy expects Luxon'sDateTime. You need to call.toDateTime()to unwrap it.Looking at the existing codebase, every other component already does this correctly e.g., audit-logs.component.ts:
this._dateTimeService.getEndOfDayForDate(currentDateRange[1]).toDateTime(),In the
currencyConvertors.component.tsfile, are missing the.toDateTime()call. Change them from:// WRONG — returns ChainableDateTime, not DateTime : this._dateTimeService.getEndOfDayForDate(this.maxCalendarDateFilter), ... : this._dateTimeService.getStartOfDayForDate(this.minCalendarDateFilter),to:
// CORRECT — .toDateTime() unwraps to Luxon DateTime : this._dateTimeService.getEndOfDayForDate(this.maxCalendarDateFilter).toDateTime(), ... : this._dateTimeService.getStartOfDayForDate(this.minCalendarDateFilter).toDateTime(),ChainableDateTimeis a wrapper around LuxonDateTimethat provides fluent chaining (.plusDays(),.startOf(), etc.). When you pass a value to a NSwag service proxy, it expects the raw LuxonDateTimetype. The.toDateTime()method onChainableDateTimereturns the underlyingDateTimevalue which is exactly what the proxy needs.This pattern is consistent across all other components in the project (audit-logs, login-attempts, notifications, etc.).
If the problem persists after implementing this change, please do not hesitate to contact us. We would be happy to help. Thank you.
Markdown is supportedCopy & paste or drag & drop images (max 30 MB per image) -
0
[oguzhanagir] said: Hi @gbskwadmin
First of all, we apologize for the problem you are experiencing. Is this problem occurring in ASP.NET Zero or during the Power Tools entity generation process? If so, could you please share your version information with us? If it's a problem on our end, we can develop a quick fix plan to prevent others from experiencing the same issue. We believe you can resolve the problem by following the instructions below.
The issue is that
getEndOfDayForDate()andgetStartOfDayForDate()returnChainableDateTime, but the service proxy expects Luxon'sDateTime. You need to call.toDateTime()to unwrap it.Looking at the existing codebase, every other component already does this correctly e.g., audit-logs.component.ts:
this._dateTimeService.getEndOfDayForDate(currentDateRange[1]).toDateTime(),In the
currencyConvertors.component.tsfile, are missing the.toDateTime()call. Change them from:// WRONG — returns ChainableDateTime, not DateTime : this._dateTimeService.getEndOfDayForDate(this.maxCalendarDateFilter), ... : this._dateTimeService.getStartOfDayForDate(this.minCalendarDateFilter),to:
// CORRECT — .toDateTime() unwraps to Luxon DateTime : this._dateTimeService.getEndOfDayForDate(this.maxCalendarDateFilter).toDateTime(), ... : this._dateTimeService.getStartOfDayForDate(this.minCalendarDateFilter).toDateTime(),ChainableDateTimeis a wrapper around LuxonDateTimethat provides fluent chaining (.plusDays(),.startOf(), etc.). When you pass a value to a NSwag service proxy, it expects the raw LuxonDateTimetype. The.toDateTime()method onChainableDateTimereturns the underlyingDateTimevalue which is exactly what the proxy needs.This pattern is consistent across all other components in the project (audit-logs, login-attempts, notifications, etc.).
If the problem persists after implementing this change, please do not hesitate to contact us. We would be happy to help. Thank you.
Thanks , error is not coming now. but i found some other error. yes i am using power tools 4.9.6 i am creating an entity "CurrencyConvertor" with 4 fields, Date, FromCurrency, ToCurrency, Rate, here FromCurrency and ToCurrency are reference fields to "Currency" Entity.
DB Table not created, even though the power tool generation was successful, above screenshot.

and one more thing ..
this is my "ToCurrencyId" settings

can i click generate, it gives me below error in first attempt.

then i go and regenerate the entity, with some changes like i will make some fields "not nullable" and click generate, it is successful but no database table created.
Markdown is supportedCopy & paste or drag & drop images (max 30 MB per image) -
0
Hi @gbskwadmin
Thank you for your feedback.
First, the issue with database migrations not being created will be resolved in the upcoming Power Tools release.
To help us recreate any other issues you're experiencing on our end, could you please share the JSON files of the entity you're trying to create and the related entity you've associated with it? We've tried recreating the issue as you described in the screenshots on our end, but haven't encountered any problems. This will be crucial in helping us internally recreate the issue. If the problem persists, we will ensure it is fixed in the next release.
Additionally, in the JSON files you share, we will check how the
DisplayPropertyarray has been added on your side.You can find the JSON files under the
AspNetZeroRadToolfolder in your project directory.Markdown is supportedCopy & paste or drag & drop images (max 30 MB per image) -
0
[oguzhanagir] said: Hi @gbskwadmin
Thank you for your feedback.
First, the issue with database migrations not being created will be resolved in the upcoming Power Tools release.
To help us recreate any other issues you're experiencing on our end, could you please share the JSON files of the entity you're trying to create and the related entity you've associated with it? We've tried recreating the issue as you described in the screenshots on our end, but haven't encountered any problems. This will be crucial in helping us internally recreate the issue. If the problem persists, we will ensure it is fixed in the next release.
Additionally, in the JSON files you share, we will check how the
DisplayPropertyarray has been added on your side.You can find the JSON files under the
AspNetZeroRadToolfolder in your project directory.dear support, 1 - when will be the next Power Tool will be released ?
2 - please find below. JSON for "CurrencyConverter", related entity "Currency" and business object class "CurrencyConverter.cs"
Entity : CurrencyConverter
{ "IsRegenerate": true, "MenuPosition": "Setup>GeneralMasterInfo", "RelativeNamespace": "BusinessObjects.GeneralMasterInfo.CurrencyConvertorBO", "EntityName": "CurrencyConvertor", "EntityNamePlural": "CurrencyConvertors", "TableName": "CurrencyConvertor", "PrimaryKeyType": "int", "BaseClass": "FullAuditedEntity", "EntityHistory": true, "AutoMigration": true, "UpdateDatabase": true, "CreateUserInterface": true, "CreateViewOnly": true, "CreateExcelExport": true, "CreateExcelImport": true, "IsNonModalCRUDPage": true, "IsMasterDetailPage": false, "GenerateOverridableEntity": false, "GenerateUnitTest": true, "GenerateUiTest": false, "GenerateMobile": false, "CreateMauiView": false, "PagePermission": { "Host": true, "Tenant": true }, "Properties": [ { "Name": "CalendarDate", "Type": "DateTime", "MaxLength": -1, "MinLength": -1, "Range": { "IsRangeSet": false, "MinimumValue": 0.0, "MaximumValue": 0.0 }, "Required": false, "Nullable": true, "Regex": "", "IsMultiLingual": false, "UserInterface": { "AdvancedFilter": true, "List": true, "ListMaui": true, "CreateOrUpdate": true }, "ViewType": null, "AdditionalData": {} }, { "Name": "Rate", "Type": "double", "MaxLength": -1, "MinLength": -1, "Range": { "IsRangeSet": false, "MinimumValue": 0.0, "MaximumValue": 0.0 }, "Required": false, "Nullable": true, "Regex": "", "IsMultiLingual": false, "UserInterface": { "AdvancedFilter": true, "List": true, "ListMaui": true, "CreateOrUpdate": true }, "ViewType": null, "AdditionalData": {} } ], "NavigationProperties": [ { "Namespace": "HCMv3.BusinessObjects.GeneralMasterInfo.CurrencyBO", "ForeignEntityName": "Currency", "ForeignEntityNamePlural": "Currencies", "IdType": "int", "IsNullable": true, "PropertyName": "FromCurrencyId", "DuplicationNumber": 0, "RelationType": "single", "ViewType": "LookupTable", "DisplayPropertyNameInfos": { "MergeFormat": "{0}", "DisplayProperties": { "Code": "string" } }, "IsMultiLingual": false }, { "Namespace": "HCMv3.BusinessObjects.GeneralMasterInfo.CurrencyBO", "ForeignEntityName": "Currency", "ForeignEntityNamePlural": "Currencies", "IdType": "int", "IsNullable": true, "PropertyName": "ToCurrencyId", "DuplicationNumber": 2, "RelationType": "single", "ViewType": "LookupTable", "DisplayPropertyNameInfos": { "MergeFormat": "{0}", "DisplayProperties": { "Code": "string" } }, "IsMultiLingual": false } ], "NavigationPropertyOneToManyTables": [], "EnumDefinitions": [], "DbContext": null }Related Entity : Currency
{ "IsRegenerate": false, "MenuPosition": "Setup>GeneralMasterInfo", "RelativeNamespace": "BusinessObjects.GeneralMasterInfo.CurrencyBO", "EntityName": "Currency", "EntityNamePlural": "Currencies", "TableName": "Currency", "PrimaryKeyType": "int", "BaseClass": "FullAuditedEntity", "EntityHistory": true, "AutoMigration": true, "UpdateDatabase": true, "CreateUserInterface": true, "CreateViewOnly": true, "CreateExcelExport": true, "CreateExcelImport": true, "IsNonModalCRUDPage": true, "IsMasterDetailPage": false, "GenerateOverridableEntity": false, "GenerateUnitTest": true, "GenerateUiTest": false, "GenerateMobile": false, "CreateMauiView": false, "PagePermission": { "Host": true, "Tenant": true }, "Properties": [ { "Name": "Code", "Type": "string", "MaxLength": 100, "MinLength": 0, "Range": { "IsRangeSet": false, "MinimumValue": 0.0, "MaximumValue": 0.0 }, "Required": true, "Nullable": false, "Regex": "", "IsMultiLingual": false, "UserInterface": { "AdvancedFilter": true, "List": true, "ListMaui": true, "CreateOrUpdate": true }, "ViewType": null, "AdditionalData": {} }, { "Name": "NameEn", "Type": "string", "MaxLength": 100, "MinLength": 0, "Range": { "IsRangeSet": false, "MinimumValue": 0.0, "MaximumValue": 0.0 }, "Required": true, "Nullable": false, "Regex": "", "IsMultiLingual": false, "UserInterface": { "AdvancedFilter": true, "List": true, "ListMaui": true, "CreateOrUpdate": true }, "ViewType": null, "AdditionalData": {} }, { "Name": "NameAr", "Type": "string", "MaxLength": 100, "MinLength": 0, "Range": { "IsRangeSet": false, "MinimumValue": 0.0, "MaximumValue": 0.0 }, "Required": true, "Nullable": false, "Regex": "", "IsMultiLingual": false, "UserInterface": { "AdvancedFilter": true, "List": true, "ListMaui": true, "CreateOrUpdate": true }, "ViewType": null, "AdditionalData": {} }, { "Name": "DecimalCount", "Type": "int", "MaxLength": -1, "MinLength": -1, "Range": { "IsRangeSet": false, "MinimumValue": 0.0, "MaximumValue": 0.0 }, "Required": false, "Nullable": true, "Regex": "", "IsMultiLingual": false, "UserInterface": { "AdvancedFilter": true, "List": true, "ListMaui": true, "CreateOrUpdate": true }, "ViewType": null, "AdditionalData": {} }, { "Name": "CurrencyShortFormEn", "Type": "string", "MaxLength": 100, "MinLength": 0, "Range": { "IsRangeSet": false, "MinimumValue": 0.0, "MaximumValue": 0.0 }, "Required": false, "Nullable": true, "Regex": "", "IsMultiLingual": false, "UserInterface": { "AdvancedFilter": true, "List": true, "ListMaui": true, "CreateOrUpdate": true }, "ViewType": null, "AdditionalData": {} }, { "Name": "CurrencyDenominationFormEn", "Type": "string", "MaxLength": 100, "MinLength": 0, "Range": { "IsRangeSet": false, "MinimumValue": 0.0, "MaximumValue": 0.0 }, "Required": false, "Nullable": true, "Regex": "", "IsMultiLingual": false, "UserInterface": { "AdvancedFilter": true, "List": true, "ListMaui": true, "CreateOrUpdate": true }, "ViewType": null, "AdditionalData": {} }, { "Name": "CurrencyShortFormAr", "Type": "string", "MaxLength": 100, "MinLength": 0, "Range": { "IsRangeSet": false, "MinimumValue": 0.0, "MaximumValue": 0.0 }, "Required": false, "Nullable": true, "Regex": "", "IsMultiLingual": false, "UserInterface": { "AdvancedFilter": true, "List": true, "ListMaui": true, "CreateOrUpdate": true }, "ViewType": null, "AdditionalData": {} }, { "Name": "CurrencyDenominationFormAr", "Type": "string", "MaxLength": 100, "MinLength": 0, "Range": { "IsRangeSet": false, "MinimumValue": 0.0, "MaximumValue": 0.0 }, "Required": false, "Nullable": true, "Regex": "", "IsMultiLingual": false, "UserInterface": { "AdvancedFilter": true, "List": true, "ListMaui": true, "CreateOrUpdate": true }, "ViewType": null, "AdditionalData": {} } ], "NavigationProperties": [], "NavigationPropertyOneToManyTables": [], "EnumDefinitions": [], "DbContext": null }`[Table("CurrencyConvertor")] [Audited] public class CurrencyConvertor : FullAuditedEntity, IMayHaveTenant { public int? TenantId { get; set; }
public virtual DateTime? CalendarDate { get; set; } public virtual double? Rate { get; set; } public virtual int? FromCurrencyId { get; set; } [ForeignKey("FromCurrencyId")] public Currency FromCurrencyFk { get; set; } public virtual int? ToCurrencyId { get; set; } [ForeignKey("ToCurrencyId")] public Currency ToCurrencyFk { get; set; }}`
Markdown is supportedCopy & paste or drag & drop images (max 30 MB per image) -
0
dear support, i found that i am not able to create any new entity through power tool. it hangs and throws below error everytime i try to create any new entity or regenerate any entity.
exactly after this screen i get the error.i am trying to create very simple entity, atleast 30-35 similar entitites i created before without errors. i am not able to continue my work because of both these issues mentioned in previous reply and this error with new entities ? is there any tutorial to create entities / navigation prop / master detail class manually without power tools.
[Table("CostCenterGroup")] public class CostCenterGroup : FullAuditedEntity, IMayHaveTenant { public int? TenantId { get; set; }
[Required] [StringLength(CostCenterGroupConsts.MaxCodeLength, MinimumLength = CostCenterGroupConsts.MinCodeLength)] public virtual string Code { get; set; } [Required] [StringLength(CostCenterGroupConsts.MaxNameEnLength, MinimumLength = CostCenterGroupConsts.MinNameEnLength)] public virtual string NameEn { get; set; } [Required] [StringLength(CostCenterGroupConsts.MaxNameArLength, MinimumLength = CostCenterGroupConsts.MinNameArLength)] public virtual string NameAr { get; set; }}
{ "IsRegenerate": true, "MenuPosition": "Setup>OrganizationManagement", "RelativeNamespace": "BusinessObjects.OrganizationManagement.CostCenterGroupBO", "EntityName": "CostCenterGroup", "EntityNamePlural": "CostCenterGroups", "TableName": "CostCenterGroup", "PrimaryKeyType": "int", "BaseClass": "FullAuditedEntity", "EntityHistory": false, "AutoMigration": true, "UpdateDatabase": true, "CreateUserInterface": true, "CreateViewOnly": true, "CreateExcelExport": true, "CreateExcelImport": true, "IsNonModalCRUDPage": true, "IsMasterDetailPage": false, "GenerateOverridableEntity": false, "GenerateUnitTest": false, "GenerateUiTest": false, "GenerateMobile": false, "CreateMauiView": false, "PagePermission": { "Host": true, "Tenant": true }, "Properties": [ { "Name": "Code", "Type": "string", "MaxLength": 100, "MinLength": 0, "Range": { "IsRangeSet": false, "MinimumValue": 0.0, "MaximumValue": 0.0 }, "Required": true, "Nullable": false, "Regex": "", "IsMultiLingual": false, "UserInterface": { "AdvancedFilter": true, "List": true, "ListMaui": true, "CreateOrUpdate": true }, "ViewType": null, "AdditionalData": {} }, { "Name": "NameEn", "Type": "string", "MaxLength": 100, "MinLength": 0, "Range": { "IsRangeSet": false, "MinimumValue": 0.0, "MaximumValue": 0.0 }, "Required": true, "Nullable": false, "Regex": "", "IsMultiLingual": false, "UserInterface": { "AdvancedFilter": true, "List": true, "ListMaui": true, "CreateOrUpdate": true }, "ViewType": null, "AdditionalData": {} }, { "Name": "NameAr", "Type": "string", "MaxLength": 100, "MinLength": 0, "Range": { "IsRangeSet": false, "MinimumValue": 0.0, "MaximumValue": 0.0 }, "Required": true, "Nullable": false, "Regex": "", "IsMultiLingual": false, "UserInterface": { "AdvancedFilter": true, "List": true, "ListMaui": true, "CreateOrUpdate": true }, "ViewType": null, "AdditionalData": {} } ], "NavigationProperties": [], "NavigationPropertyOneToManyTables": [], "EnumDefinitions": [], "DbContext": null }
Markdown is supportedCopy & paste or drag & drop images (max 30 MB per image) -
0
Dear @gbskwadmin
Thank you for your detailed report, including the screenshots and JSON configurations. We have completed our investigation of the issues you reported and would like to provide the following updates:
“Encountered malformed markup tag” error when creating CostCenterGroup This issue was caused by unescaped console output from Entity Framework Core commands. The problem has been resolved in our development branch and will be included in the next release. We are pleased to hear that you are no longer experiencing this error.
ArgumentNullException: Value cannot be null (Parameter 'key') when generating CurrencyConvertor This occurred because the
DisplayPropertyNamefield was null when onlyDisplayPropertyNameInfoswas provided in the JSON configuration. We have added the necessary null checks, and the fix is now available in our development branch. It will be included in the upcoming release.CS0229 Ambiguity error – Duplicate _lookupCurrencyRepository parameter We have confirmed this as a bug on our side. When an entity contains multiple navigation properties referencing the same foreign entity (e.g.,
FromCurrencyIdandToCurrencyIdboth referencingCurrency), the Excel Import background job template generates duplicate repository parameters. The issue has been identified and fixed, and the correction will be included in the next release.
Temporary Workaround for Issue #3: After generating the
CurrencyConvertorentity, you may manually edit the generatedImportCurrencyConvertorsToExcelJob.csfile by removing the duplicate_lookupCurrencyRepositoryparameter from the constructor (retain only a single instance).Regarding the next Power Tools release: The new version is planned for release next week. We will notify you as soon as it becomes available. All three fixes mentioned above will be included.
Concerning manual entity creation without Power Tools: While technically possible, manual creation requires updating multiple layers (entity class, DTOs, application service, controller, Angular components, permissions, etc.). Given the scope of changes required, we recommend waiting for the upcoming release rather than proceeding manually, as this would be considerably more time-consuming and error-prone.
We apologize for the inconvenience and appreciate your detailed feedback, which helps us improve the product.
Best regards,
Markdown is supportedCopy & paste or drag & drop images (max 30 MB per image) -
0
dear support, point no1 is not fixed,"CostCenterGroup" and i am not able to continue generating simple entities. it keeps giving markup malformed markup error. please advise any manually fix, so i can continue creating entities with current power tool version i have.
2 - how to install new update for Power tools ? from which link ?
Markdown is supportedCopy & paste or drag & drop images (max 30 MB per image) -
0
dear support, For CostCenterGroup entity - i kept namespace as "BusinessObjects.OrganizationManagement.CostCenterGroupBO" and it was throwing malformed error. but when i changed the namespace, shortened the namespace then power tool did not give any malformed error. new namespace "BusinessObjects.OrgManagement.CostCenterGroupBO"
but still database table is not getting created. i tried to run the update-database command manually , i get below warning.
Markdown is supportedCopy & paste or drag & drop images (max 30 MB per image) -
0
I had to delete from sql table then it worked. and manually run below command
IN SQL delete from __EFMigrationsHistory where MigrationId = '20260226115513_Added_CostCenterGroup'
IN POWERSHELL dotnet ef database update --startup-project ../HCMv3.Web.Host
Noiw i can see db table created, i dont understand why it did not create through power tool, though power tool always gave successfu message.
Markdown is supportedCopy & paste or drag & drop images (max 30 MB per image) -
0
dear support, can you please reply.
Markdown is supportedCopy & paste or drag & drop images (max 30 MB per image) -
0
Dear @gbskwadmin,
Thank you for your patience while we investigated the issues you reported.
We would like to inform you that the “Malformed markup tag” problem has been resolved in our development branch. Additionally, the Update Database / migration execution issue has also been addressed.
Based on our review, the behavior you experienced was likely a combination of:
- Unescaped console output causing the malformed markup exception
- Migration update flow inconsistencies
- A potential Windows path length limitation due to long namespace / folder structures
Regarding the Windows path length limitation, we recommend either shortening your folder and namespace naming structure or enabling long path support in Windows settings (via Group Policy or registry configuration) to prevent similar issues.
All of these fixes are included in the upcoming Power Tools and ASP.NET Zero releases, which are scheduled for publication this week.
How to update Power Tools
Once the new version is released, you can update the Power Tools extension directly from your IDE:
Visual Studio → Extensions → Manage Extensions → Installed → Power Tools → Update
(If prompted, please restart Visual Studio after updating.)
After updating both ASP.NET Zero and Power Tools to the latest versions, entity generation and database migration processes should work as expected without requiring manual intervention.
We appreciate your detailed feedback, which helped us finalize these fixes.
Best regards
Markdown is supportedCopy & paste or drag & drop images (max 30 MB per image)













