Working.
https://support.abp.io/QA/Questions/1203/Angular-UI-blocking-page-mechanism-during--loading--saving
This property is not nullable and I marked Required with an error message.
[Required(ErrorMessage ="Select a Book Language")] public Guid BookLanguageId { get; set; }
I think I have to place angular form validators also.
bookLanguage: [null, Validators.required],
ABP Framework version: v5.2.1
UI type: Angular
DB provider: EF Core
Tiered (MVC) or Identity Server Separated (Angular): yes
Exception message and stack trace:
Steps to reproduce the issue:" How to change the default error validation message coming in angular UI during form submission? or How can I stop this validation, I used [DisableValidation] but still it is validating.
public Guid BookLanguageId { get; set; }
Working. Thanks.
public virtual async Task<TestParentDto> CreateAsync(TestParentCreateDto input)  {  var titles = ObjectMapper.Map<List<TestParentChildCreateDto>, List<TestParentChild>>(input.Titles);  var testParent = await _testParentManager.CreateAsync( input.Price, titles );  return ObjectMapper.Map<TestParent, TestParentDto>(testParent);  }
public async Task<TestParent> CreateAsync( decimal price, List<TestParentChild> titles)  {  var testParent = new TestParent( GuidGenerator.Create(), price, titles );  return await _testParentRepository.InsertAsync(testParent);  }
There is no exception if collection contain only one entity
Before await _testParentManager.CreateAsync
After await _testParentManager.CreateAsync
2022-04-28 10:08:29.402 +04:00 [ERR] ---------- RemoteServiceErrorInfo ---------- { "code": null, "message": "An internal error occurred during your request!", "details": null, "data": {}, "validationErrors": null }
2022-04-28 10:08:29.403 +04:00 [ERR] The instance of entity type 'TestParentChild' cannot be tracked because another instance with the same key value for {'Id'} is already being tracked. When attaching existing entities, ensure that only one entity instance with a given key value is attached. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see the conflicting key values.
System.InvalidOperationException: The instance of entity type 'TestParentChild' cannot be tracked because another instance with the same key value for {'Id'} is already being tracked. When attaching existing entities, ensure that only one entity instance with a given key value is attached. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see the conflicting key values.
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IdentityMap1.ThrowIdentityConflict(InternalEntityEntry entry) at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IdentityMap1.Add(TKey key, InternalEntityEntry entry, Boolean updateDuplicate)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IdentityMap1.Add(TKey key, InternalEntityEntry entry) at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IdentityMap1.Add(InternalEntityEntry entry)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.StartTracking(InternalEntityEntry entry)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.SetEntityState(EntityState oldState, EntityState newState, Boolean acceptChanges, Boolean modifyProperties)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.SetEntityStateAsync(EntityState entityState, Boolean acceptChanges, Boolean modifyProperties, Nullable1 forceStateWhenUnknownKey, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.EntityGraphAttacher.PaintActionAsync(EntityEntryGraphNode1 node, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.EntityEntryGraphIterator.TraverseGraphAsync[TState](EntityEntryGraphNode1 node, Func3 handleNode, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.EntityEntryGraphIterator.TraverseGraphAsync[TState](EntityEntryGraphNode1 node, Func3 handleNode, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.EntityGraphAttacher.AttachGraphAsync(InternalEntityEntry rootEntry, EntityState targetState, EntityState storeGeneratedWithKeySetTargetState, Boolean forceStateWhenUnknownKey, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Internal.InternalDbSet1.AddAsync(TEntity entity, CancellationToken cancellationToken) at Volo.Abp.Domain.Repositories.EntityFrameworkCore.EfCoreRepository2.InsertAsync(TEntity entity, Boolean autoSave, CancellationToken cancellationToken)
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at AkadimiSample.TestParents.TestParentManager.CreateAsync(Decimal price, List1 titles) in D:\POCs\AkadimiSample\aspnet-core\src\AkadimiSample.Domain\TestParents\TestParentManager.cs:line 30
at AkadimiSample.TestParents.TestParentsAppService.CreateAsync(TestParentCreateDto input) in D:\POCs\AkadimiSample\aspnet-core\src\AkadimiSample.Application\TestParents\TestParentAppService.cs:line 57
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.Authorization.AuthorizationInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync()
at Volo.Abp.GlobalFeatures.GlobalFeatureInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed)
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.Auditing.AuditingInterceptor.ProceedByLoggingAsync(IAbpMethodInvocation invocation, IAuditingHelper auditingHelper, IAuditLogScope auditLogScope) at Volo.Abp.Auditing.AuditingInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync()
at Volo.Abp.Validation.ValidationInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed)
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at lambda_method2257(Closure , Object ) at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask1 actionResultValueTask)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
--- End of stack trace from previous location ---
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
2022-04-28 10:08:29.417 +04:00 [INF] Executing ObjectResult, writing value of type 'Volo.Abp.Http.RemoteServiceErrorResponse'.
2022-04-28 10:08:29.422 +04:00 [INF] Executed action AkadimiSample.Controllers.TestParents.TestParentController.CreateAsync (AkadimiSample.HttpApi) in 14344.2631ms
2022-04-28 10:08:29.422 +04:00 [INF] Executed endpoint 'AkadimiSample.Controllers.TestParents.TestParentController.CreateAsync (AkadimiSample.HttpApi)'
If you're creating a bug/problem report, please include the followings:
ABP Framework version: v5.2.1
UI type: Angular
DB provider: EF Core
Tiered (MVC) or Identity Server Separated (Angular): yes
Exception message and stack trace:
Steps to reproduce the issue:"
I have a query regarding entity collection insertion on the table along with the parent without running the loop. I mentioned below the schema definition
public class TestParent : FullAuditedAggregateRoot<Guid>, IMultiTenant
    {
        public virtual Guid? TenantId { get; set; }
        public virtual decimal Price { get; set; }
        public virtual ICollection<TestParentChild> Titles { get; set; }
        public TestParent()
        {
        }
        public TestParent(Guid id, decimal price, ICollection<TestParentChild> titles)
        {
            Id = id;
            Price = price;
            Titles = titles;
        }
    }
    
public class TestParentChild : Entity<Guid>
    {
        [CanBeNull]
        public virtual string Language { get; set; }
        [CanBeNull]
        public virtual string Title { get; set; }
        public virtual Guid TestParentId { get; set; }
        public TestParentChild()
        {
        }
        public TestParentChild(Guid id, string language, string title, Guid testParentId)
        {
            Id = id;
            Language = language;
            Title = title;
            TestParentId = testParentId;
        }
    }
How can I insert records in Book and BookTranslation table without running a loop? When I am trying to insert a collection (BookTranslation) without generating an Id (GUID), I am getting exceptions. Below is the sample code which is working with the loop.
public async Task<BookLanguage> CreateAsync(List<BookLanguageTranslation> titles,
bool isActive)
{
    var bookLanguage = new BookLanguage(
     GuidGenerator.Create(),
     CurrentTenant.Id,
     isActive
     );
    await SetBookLanguageTitlesAsync(bookLanguage, titles);
    return await _bookLanguageRepository.InsertAsync(bookLanguage);
}
private async Task SetBookLanguageTitlesAsync(BookLanguage bookLanguage, List<BookLanguageTranslation> titles)
{
    foreach (var item in titles)
    {
        bookLanguage.AddTitles(GuidGenerator.Create(), item.Language, item.Title);
    }
}
 
                                