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

Oracle ODP.Net và EF CodeFirst - Lỗi SaveChanges

Ý tưởng với Attach() là bạn có một thực thể được biết là có trong DB nhưng không được theo dõi bởi ngữ cảnh này, phải không? Câu hỏi của tôi dành cho bạn là bạn có biết chắc rằng Vai trò này ở đây không:

Role r = new Role { ID = 1, Name = "Members" };

là một cái gì đó đã tồn tại? Nếu không, tôi không nghĩ bạn muốn làm gì là sử dụng

ctx.Roles.Attach(r);

đúng hơn là bạn nên viết:

ctx.Roles.Add(r);

và sau đó bạn có thể quay lại và viết

User u = new User {
    Login = login,
    Password = password,
    Status = 1,
};

ctx.Users.Add(u);
u.Roles.Add(r);
ctx.SaveChanges();

Vấn đề mà ví dụ đầu tiên của bạn gặp phải là Vai trò mới này thực sự mới đối với DB nên việc gắn nó không phải là điều bạn muốn làm, thay vì bạn muốn Thêm nó.

Và một lệnh gọi tới ctx.SaveChanges() sẽ hoạt động tốt ở đây.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. OracleParameter và Mệnh đề IN

  2. Oracle:Làm thế nào để biết được có một giao dịch đang chờ xử lý hay không?

  3. Chọn hàng đầu tiên của mỗi nhóm trong sql

  4. Làm cách nào để bạn chuyển một đối số tới một khối PL / SQL trong một tệp sql được gọi là sử dụng START trong sqlplus?

  5. Làm cách nào để đặt bí danh cho một bảng trong Oracle?