Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

ef core một đến nhiều mối quan hệ ném ngoại lệ Không thể thêm hoặc cập nhật một hàng con

Bạn không nên tạo ShopID nullable nếu nó được yêu cầu bởi thiết kế.

Sự cố bạn đang gặp phải là do Add phương thức cũng đánh dấu một cách đệ quy tất cả các cá thể thực thể có thể truy cập được thông qua các thuộc tính điều hướng và hiện không được ngữ cảnh theo dõi là Added (tức là mới).

Nó có thể được giải quyết theo nhiều cách:

  • Đặt mục nhập thực thể thành Added thay vì Add phương pháp:

    _context.Entry(Product).State = EntityState.Added;
    await _context.SaveChangesAsync();
    
  • Đặt thuộc tính điều hướng thành null trước đây gọi Add :

    Product.Shop = null;
    _context.Products.Add(Product);
    await _context.SaveChangesAsync();
    
  • Đính kèm đối tượng thuộc tính điều hướng trước gọi Add :

    if (Product.Shop != null) _context.Attach(Product.Shop);
    _context.Products.Add(Product);
    await _context.SaveChangesAsync();
    
  • Sử dụng Update thay vì Add :

    _context.Products.Update(Product);
    await _context.SaveChangesAsync();
    

Kỹ thuật cuối cùng được giải thích trong Lưu dữ liệu - Thực thể bị ngắt kết nối - Kết hợp các thực thể mới và hiện tại :

Vì nó chỉ hoạt động khi tất cả các thực thể sử dụng PK được tạo tự động và cũng tạo ra các bản cập nhật không cần thiết cho các thực thể có liên quan, tôi không khuyên bạn nên sử dụng nó.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao tôi nhận được Truy vấn lỗi MySQL trống?

  2. Điều gì sai với câu lệnh tạo bảng này?

  3. CẬP NHẬT Cùng một hàng Sau khi CẬP NHẬT trong Trình kích hoạt

  4. Chèn giá trị hex vào MySql

  5. Cảnh báo:mysqli_query ():Không thể tìm nạp mysqli