Quantcast
Channel: ASP.NET Core
Viewing all articles
Browse latest Browse all 9386

When using SaveChangesAsync() my other code stop execute

$
0
0

I have problem and i think its a deadlock and i cant resolve the problem. I know there simular problem discuse but i need help. When i try to saveChange on productReposotory it stuck and dont execute the other code.

Here is my controller:

public IActionResult All(string type)
{
var viewModel = new AllFireplaceViewModel
{
Fireplaces =
this.fireplaceService.GetAllFireplaceAsync<IndexFireplaceViewModel>(type).Where(x => x.TypeOfChamber == type),
};
return this.View(viewModel);
}

My IFireplaceService:

using System.Collections.Generic;
using System.Threading.Tasks;

using KaminiCenter.Web.ViewModels.Fireplace;

public interface IFireplaceService
{
Task AddFireplaceAsync(FireplaceInputModel fireplaceInputModel);

IEnumerable<T> GetAllFireplaceAsync<T>(string type);

T GetByName<T>(string name);
}

And this is my implementation of the interface:

public async Task AddFireplaceAsync(FireplaceInputModel model)
{
var typeOfChamber = Enum.Parse<TypeOfChamber>(model.TypeOfChamber);

if (model.Power == null ||
model.Size == null ||
model.Chimney == null)
{
throw new ArgumentNullException("Cannot safe null or whitespace values!");
}

await this.productService.AddProductAsync(model.Name, model.Group);
var productId = this.productService.GetIdByNameAndGroup(model.Name, model.Group);
var groupId = this.groupService.FindByGroupName(model.Group).Id;

var fireplace = new Fireplace_chamber
{
Id = Guid.NewGuid().ToString(),
Power = model.Power,
Size = model.Size,
Chimney = model.Chimney,
Price = model.Price,
Description = model.Description,
ImagePath = model.ImagePath.ToString(),
TypeOfChamber = typeOfChamber,
ProductId = productId,
GroupId = groupId,
CreatedOn = DateTime.UtcNow,
ModifiedOn = DateTime.UtcNow,
};

await this.fireplaceRepository.AddAsync(fireplace);
await this.fireplaceRepository.SaveChangesAsync();
}
This is the productService.AddProductAsync:

public async Task AddProductAsync(string name, string groupName)
{
var group = this.groupService.FindByGroupName(groupName);

if (group == null)
{
await this.groupService.CreateAsync(groupName);
}

var product = new Product
{
// TO Check for Id Initializesion
Id = Guid.NewGuid().ToString(),
Name = name,
GroupId = group.Id,
CreatedOn = DateTime.UtcNow,
ModifiedOn = DateTime.UtcNow,
};

await this.productRepository.AddAsync(product);
await this.productRepository.SaveChangesAsync();
}

And my Add Action

public IActionResult Add()
{
var createFireplaceInputModel = new FireplaceInputModel();

return this.View(createFireplaceInputModel);
}


Viewing all articles
Browse latest Browse all 9386

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>