Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

731
Views
Entity Framework: agregar a una relación de uno a muchos da una excepción de concurrencia

Estoy tratando de agregar a una relación de uno a muchos. Una vez que intento guardar el producto recién creado usando

 context.saveChangesAsync() company.Products.Add(x)

No me permitirá - Obtengo una excepción:

Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException: se esperaba que la operación de la base de datos afectara a 1 fila, pero en realidad afectó a 0 filas; los datos pueden haber sido modificados o eliminados desde que se cargaron las entidades.

No puedo averiguar dónde se está modificando. Espero que me puedan ayudar. Gracias por adelantado.

 public async Task<Result<ProductDto>> Handle(Command request, CancellationToken cancellationToken) { var company = await _context.Companies .Include(x => x.Products) .SingleOrDefaultAsync(a => a.UserId == _userAccessor.GetUserId()); if (company != null) { var productToAdd = new Product { Name = request.Product.Name, Description = request.Product.Description, SalePrice = request.Product.SalePrice, }; company.Products.Add(productToAdd); var result = await _context.SaveChangesAsync() > 0; if (!result) return Result<ProductDto>.Failure("failed to create product"); } return Result<ProductDto>.Success(request.Product); } public class Product : BaseEntity { public Company Company { get; set; } public Guid CompanyId { get; set; } public string Name { get; set; } public string Description { get; set; } public decimal SalePrice { get; set; } public decimal CostPrice { get; set; } public int VatPercentage { get; set; } = 25; } public class Company : BaseEntity { public string CompanyName { get; set; } public string Address { get; set; } public string Zipcode { get; set; } public string City { get; set; } public string TaxId { get; set; } public string UserId { get; set; } public AppUser User { get; set; } public ICollection<Product> Products { get; set; } = new List<Product>(); }

No sé por qué y parece que no puedo encontrar el problema y lo que estoy haciendo mal. Mi relación de constructor está establecida:

 modelBuilder.Entity("Domain.Entities.Company", b => { b.Navigation("Products"); }); b.HasOne("Domain.Entities.Company", "Company") .WithMany("Products") .HasForeignKey("CompanyId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Company");
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

intente esto, de esta manera no necesita usar .Include(x => x.Products) para cargar la lista de todos los productos. Puede ahorrar algo de tráfico de red y tiempo. Y agregar a la lista de productos funcionará para una nueva empresa. Cuando descarga una empresa existente, ef la rastrea y, a veces, da una excepción.

 if (company != null) { var productToAdd = new Product { CompanyId=company.Id, Name = request.Product.Name, Description = request.Product.Description, SalePrice = request.Product.SalePrice, }; _context.Products.Add(productToAdd); var result = await _context.SaveChangesAsync(); if (result == 0) return Result<ProductDto>.Failure("failed to create product"); }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!