fullstackhero / blazor-starter-kit

Clean Architecture Template for Blazor WebAssembly Built with MudBlazor Components.
MIT License
3.49k stars 732 forks source link

Using Dapper #208

Closed arkannet closed 3 years ago

arkannet commented 3 years ago

Hi Can you make an example to made crud with dapper, im trying but allways have error in async save method

iammukeshm commented 3 years ago

What's the error you get? Could you share some details?

arkannet commented 3 years ago

first of all i want to thank you about this great work , and many thanks for your replay i try to used dapper with Blazor Hero this is my test i put it in Application layer like this `public async Task<Result> Handle(AddEditBrandCommand command, CancellationToken cancellationToken) { if (command.Id == 0) { var brand = _mapper.Map(command); //await _unitOfWork.Repository().AddAsync(brand); using (var conn = new SqlConnection("Data Source=(local);Initial Catalog=AVDB;Integrated Security=True;")) { var parameters = new DynamicParameters(); parameters.Add("Name", brand.Name, DbType.String); parameters.Add("Description", brand.Description, DbType.String); parameters.Add("Tax", brand.Tax, DbType.Decimal);

                conn.Open();
                // Stored procedure method
                await conn.ExecuteAsync("Brands_NeW", parameters, commandType: CommandType.StoredProcedure);
            }
            await _unitOfWork.CommitAndRemoveCache(cancellationToken, ApplicationConstants.Cache.GetAllBrandsCacheKey);
            return await Result<int>.SuccessAsync(brand.Id, _localizer["Brand Saved"]);
        }
        else
        {
            var brand = await _unitOfWork.Repository<Brand>().GetByIdAsync(command.Id);
            if (brand != null)
            {
                brand.Name = command.Name ?? brand.Name;
                brand.Tax = (command.Tax == 0) ? brand.Tax : command.Tax;
                brand.Description = command.Description ?? brand.Description;
                await _unitOfWork.Repository<Brand>().UpdateAsync(brand);
                await _unitOfWork.CommitAndRemoveCache(cancellationToken, ApplicationConstants.Cache.GetAllBrandsCacheKey);
                return await Result<int>.SuccessAsync(brand.Id, _localizer["Brand Updated"]);
            }
            else
            {
                return await Result<int>.FailAsync(_localizer["Brand Not Found!"]);
            }
        }
    }`

and the error is Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100] Unhandled exception rendering component: The JSON value could not be converted to System.Int32. Path: $.Data | LineNumber: 0 | BytePositionInLine: 12. System.Text.Json.JsonException: The JSON value could not be converted to System.Int32. Path: $.Data | LineNumber: 0 | BytePositionInLine: 12. ---> System.InvalidOperationException: Cannot get the value of a token type 'Null' as a number. at System.Text.Json.Utf8JsonReader.TryGetInt32(Int32& value) at System.Text.Json.Utf8JsonReader.GetInt32() at System.Text.Json.Serialization.Converters.Int32Converter.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options) at System.Text.Json.JsonPropertyInfo1[[System.Int32, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].ReadJsonAndSetMember(Object obj, ReadStack& state, Utf8JsonReader& reader) at System.Text.Json.Serialization.Converters.ObjectDefaultConverter1[[AVATOR.Shared.Wrapper.Result1[[System.Int32, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], AVATOR.Shared, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].OnTryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, Result1& value) at System.Text.Json.Serialization.JsonConverter1[[AVATOR.Shared.Wrapper.Result1[[System.Int32, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], AVATOR.Shared, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, Result1& value) at System.Text.Json.Serialization.JsonConverter1[[AVATOR.Shared.Wrapper.Result1[[System.Int32, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], AVATOR.Shared, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state) --- End of inner exception stack trace --- at System.Text.Json.ThrowHelper.ReThrowWithPath(ReadStack& state, Utf8JsonReader& reader, Exception ex) at System.Text.Json.Serialization.JsonConverter1[[AVATOR.Shared.Wrapper.Result1[[System.Int32, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], AVATOR.Shared, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state) at System.Text.Json.JsonSerializer.ReadCore[Result1](JsonConverter jsonConverter, Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state) at System.Text.Json.JsonSerializer.ReadCore[Result1](Utf8JsonReader& reader, Type returnType, JsonSerializerOptions options) at System.Text.Json.JsonSerializer.Deserialize[Result1](String json, Type returnType, JsonSerializerOptions options) at System.Text.Json.JsonSerializer.Deserialize[Result1](String json, JsonSerializerOptions options) at AVATOR.Client.Infrastructure.Extensions.ResultExtensions.<ToResult>d__01[[System.Int32, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() in D:\AVATOR\src\Client.Infrastructure\Extensions\ResultExtensions.cs:line 14 at AVATOR.Client.Infrastructure.Managers.Catalog.Brand.BrandManager.SaveAsync(AddEditBrandCommand request) in D:\AVATOR\src\Client.Infrastructure\Managers\Catalog\Brand\BrandManager.cs:line 44 at AVATOR.Client.Pages.Catalog.AddEditBrandModal.SaveAsync() in D:\AVATOR\src\Client\Pages\Catalog\AddEditBrandModal.razor.cs:line 31 at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task) at Microsoft.AspNetCore.Components.Forms.EditForm.HandleSubmitAsync() at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task) at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle) d.printErr @ blazor.webassembly.js:1 d.preRun.push.window.Blazor._internal.dotNetCriticalError @ blazor.webassembly.js:1 w @ blazor.webassembly.js:1 _mono_wasm_invoke_js_blazor @ dotnet.5.0.7.js:1 do_icall @ 00aba242:0x194e4e do_icall_wrapper @ 00aba242:0x79df9 interp_exec_method @ 00aba242:0x44ad3 interp_runtime_invoke @ 00aba242:0x12efff mono_jit_runtime_invoke @ 00aba242:0x118e5f do_runtime_invoke @ 00aba242:0x79d42 mono_runtime_try_invoke @ 00aba242:0x12982 mono_runtime_invoke @ 00aba242:0x10ec2b mono_wasm_invoke_method @ 00aba242:0x108e48 Module._mono_wasm_invoke_method @ dotnet.5.0.7.js:1 call_method @ dotnet.5.0.7.js:1 set_task_result @ dotnet.5.0.7.js:1 (anonymous) @ dotnet.5.0.7.js:1 Promise.then (async) js_to_mono_obj @ dotnet.5.0.7.js:1 mono_wasm_convert_return_value @ dotnet.5.0.7.js:1 _mono_wasm_invoke_js_with_args @ dotnet.5.0.7.js:1 do_icall @ 00aba242:0x194ddb do_icall_wrapper @ 00aba242:0x79df9 interp_exec_method @ 00aba242:0x44ad3 interp_runtime_invoke @ 00aba242:0x12efff mono_jit_runtime_invoke @ 00aba242:0x118e5f do_runtime_invoke @ 00aba242:0x79d42 mono_runtime_try_invoke @ 00aba242:0x12982 mono_runtime_invoke @ 00aba242:0x10ec2b mono_wasm_invoke_method @ 00aba242:0x108e48 Module._mono_wasm_invoke_method @ dotnet.5.0.7.js:1 call_method @ dotnet.5.0.7.js:1 set_task_result @ dotnet.5.0.7.js:1 (anonymous) @ dotnet.5.0.7.js:1 Promise.then (async) js_to_mono_obj @ dotnet.5.0.7.js:1 mono_wasm_convert_return_value @ dotnet.5.0.7.js:1 _mono_wasm_invoke_js_with_args @ dotnet.5.0.7.js:1 do_icall @ 00aba242:0x194ddb do_icall_wrapper @ 00aba242:0x79df9 interp_exec_method @ 00aba242:0x44ad3 interp_runtime_invoke @ 00aba242:0x12efff mono_jit_runtime_invoke @ 00aba242:0x118e5f do_runtime_invoke @ 00aba242:0x79d42 mono_runtime_invoke_checked @ 00aba242:0xf65d mono_runtime_try_invoke_array @ 00aba242:0x10e831 ves_icall_InternalInvoke @ 00aba242:0xed492 ves_icall_InternalInvoke_raw @ 00aba242:0xecf57 do_icall @ 00aba242:0x194ddb do_icall_wrapper @ 00aba242:0x79df9 interp_exec_method @ 00aba242:0x44ad3 interp_runtime_invoke @ 00aba242:0x12efff mono_jit_runtime_invoke @ 00aba242:0x118e5f do_runtime_invoke @ 00aba242:0x79d42 mono_runtime_try_invoke @ 00aba242:0x12982 mono_runtime_invoke @ 00aba242:0x10ec2b mono_wasm_invoke_method @ 00aba242:0x108e48 Module._mono_wasm_invoke_method @ dotnet.5.0.7.js:1 call_method @ dotnet.5.0.7.js:1 (anonymous) @ dotnet.5.0.7.js:1 endInvokeJSFromDotNet @ blazor.webassembly.js:1 (anonymous) @ blazor.webassembly.js:1 Promise.then (async) beginInvokeJSFromDotNet @ blazor.webassembly.js:1 w @ blazor.webassembly.js:1 _mono_wasm_invoke_js_blazor @ dotnet.5.0.7.js:1 do_icall @ 00aba242:0x194e4e do_icall_wrapper @ 00aba242:0x79df9 interp_exec_method @ 00aba242:0x44ad3 interp_runtime_invoke @ 00aba242:0x12efff mono_jit_runtime_invoke @ 00aba242:0x118e5f do_runtime_invoke @ 00aba242:0x79d42 mono_runtime_try_invoke @ 00aba242:0x12982 mono_runtime_invoke @ 00aba242:0x10ec2b mono_wasm_invoke_method @ 00aba242:0x108e48 Module._mono_wasm_invoke_method @ dotnet.5.0.7.js:1 call_method @ dotnet.5.0.7.js:1 (anonymous) @ dotnet.5.0.7.js:1 endInvokeJSFromDotNet @ blazor.webassembly.js:1 (anonymous) @ blazor.webassembly.js:1 Promise.then (async) beginInvokeJSFromDotNet @ blazor.webassembly.js:1 w @ blazor.webassembly.js:1 _mono_wasm_invoke_js_blazor @ dotnet.5.0.7.js:1 do_icall @ 00aba242:0x194e4e do_icall_wrapper @ 00aba242:0x79df9 interp_exec_method @ 00aba242:0x44ad3 interp_runtime_invoke @ 00aba242:0x12efff mono_jit_runtime_invoke @ 00aba242:0x118e5f do_runtime_invoke @ 00aba242:0x79d42 mono_runtime_invoke_checked @ 00aba242:0xf65d mono_runtime_try_invoke_array @ 00aba242:0x10e831 ves_icall_InternalInvoke @ 00aba242:0xed492 ves_icall_InternalInvoke_raw @ 00aba242:0xecf57 do_icall @ 00aba242:0x194ddb do_icall_wrapper @ 00aba242:0x79df9 interp_exec_method @ 00aba242:0x44ad3 interp_runtime_invoke @ 00aba242:0x12efff mono_jit_runtime_invoke @ 00aba242:0x118e5f do_runtime_invoke @ 00aba242:0x79d42 mono_runtime_try_invoke @ 00aba242:0x12982 mono_runtime_invoke @ 00aba242:0x10ec2b mono_wasm_invoke_method @ 00aba242:0x108e48 Module._mono_wasm_invoke_method @ dotnet.5.0.7.js:1 call_method @ dotnet.5.0.7.js:1 (anonymous) @ dotnet.5.0.7.js:1 beginInvokeDotNetFromJS @ blazor.webassembly.js:1 h @ blazor.webassembly.js:1 e.invokeMethodAsync @ blazor.webassembly.js:1 (anonymous) @ blazor.webassembly.js:1 invokeWhenHeapUnlocked @ blazor.webassembly.js:1 (anonymous) @ blazor.webassembly.js:1 t.dispatchEvent @ blazor.webassembly.js:1 (anonymous) @ blazor.webassembly.js:1 (anonymous) @ blazor.webassembly.js:1 e.onGlobalEvent @ blazor.webassembly.js:1 Show 35 more frames

regards

arkannet commented 3 years ago

Dear sir I solve my issues with dapper and its work fine Regards

AhmedMahmoud2 commented 2 years ago

first i would like to say huge thank you for iammmukesh for this wonderful blazor hero. i am also interested in the dapper as i am planning to use blazor hero for master detail front end. I wonder if arkannet can share his solution for the dapper mentioned above